目录
- 创建项目环境
- conda创建环境常用命令
- 创建项目虚拟环境
- 创建虚拟环境
- 激活虚拟环境
- 安装第三方库
- pyinstaller 打包
- 常用参数组合
- 嵌入式打包
- 下载嵌入式版本的python
- 配置环境
- 无参调用
- 可完善
- nuitka打包
创建项目环境
conda创建环境常用命令
conda create -n py310 python=3.10.11
conda env list
activate
deactivate
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple XX
conda list
conda remove -n 需要删除的环境名 --all
# 复制conda虚拟环境
conda create -n new_name --clone base
# Spec List
# 如果需要在具有 相同操作系统 的计算机之间复制环境,则可以生成 spec list。
conda list --explicit > spec-list.txt
# 重现环境
conda create --name python-course --file spec-list.txt
# Environment.yml
# 使用 -export 选项生成一个 environment.yml 文件,以在 不同的平台和操作系统之间 复现项目环境
# spec list 文件和 environment.yml 文件之间的区别在于: environment.yml 文件不针对特定操作系统,并且使用YAML格式。
# environment.yml 仅列出了软件包名称,由 conda 基于软件包的名称构建环境。 另一个区别是 -export 还包括使用pip安装的软件包,而 spec list 则没有。
# 导出 environment.yml 文件
conda env export > environment.yml
# 重现环境
conda env create -f environment.yml
# Conda Pack
# 用于无网络环境
# conda-pack 指定平台和操作系统,目标计算机必须具有与源计算机相同的平台和操作系统
# 需安装 conda-pack,并确保您位于 root 或 base 环境中,以便 conda-pack 在子环境中可用。Conda-pack 可通过 conda-forge 或者 PyPI 安装。
# conda-forge
conda install -c conda-forge conda-pack
# PyPI
pip install conda-pack
# ###打包一个环境###
# Pack environment my_env into my_env.tar.gz
conda pack -n my_env
# Pack environment my_env into out_name.tar.gz
conda pack -n my_env -o out_name.tar.gz
# Pack environment located at an explicit path into my_env.tar.gz
conda pack -p /explicit/path/to/my_env
# ###重现环境###
# Unpack environment into directory `my_env`
mkdir -p my_env
tar -xzf my_env.tar.gz -C my_env
# Use Python without activating or fixing the prefixes. Most Python
# libraries will work fine, but things that require prefix cleanups
# will fail.
./my_env/bin/python
# Activate the environment. This adds `my_env/bin` to your path
source my_env/bin/activate
创建项目虚拟环境
从Python 3.3版本起,Python标准库自带了venv
模块用于创建虚拟环境。
创建虚拟环境
python -m venv env
这将在当前目录下生成一个名为my_venv
的文件夹,其中包含了独立的Python解释器和pip包管理器。
18.2M
激活虚拟环境
- Windows系统:
.\env\Scripts\activate
- Linux或macOS系统:
$ source env/bin/activate
激活后,终端前缀将显示虚拟环境名,表示当前正在使用该环境的Python解释器。
安装第三方库
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy # 83.6M - 18.2M
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib #
pip list # 130M-83.6M
pyinstaller 打包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
打包成文件夹的形式
pyinstaller your_program.py
pyinstaller -F your_program.py
常用参数组合
# 基础命令
pyinstaller myscript.py
# 初次打包建议添加-c参数,可以同过cmd黑窗口查看打包问题
pyinstaller -c myscript.py
# 生成一个单独的exe文件,适合无文件操作的程序
pyinstaller -F myscript.py
# 生成一个单独的exe文件,适用windows系统,适合无文件操作的程序,下面2个是一样的效果。
pyinstaller -F -w myscript.py
pyinstaller -F --windowed myscript.py
# 生成一个文件夹,文件夹中包含exe执行程序,适合有一定文件夹或文件的操作程序。
pyinstaller -D --windowed myscript.py
# 针对文件生成的最终位置,使用--distpath=参数指定
pyinstaller -D --windowed --distpath='C:\Users\xxx\xxx\xx' myscript.py
# 针对文件生成的exe文件名字,使用--name=TYQT参数指定
pyinstaller -D --windowed --distpath='C:\Users\xxx\xxx\xx' --name='TYQT' myscript.py
# 针对文件生成的exe的图标,使用--icon=参数指定,zaiwindows系统下,需要使用ico图标,如果是png直接百度在线转
pyinstaller -D --windowed --distpath='C:\Users\xxx\xxx\xx' --name='TYQT' --icon='icon.ico' myscript.py
# 针对exe程序以来的文件夹和文件,使用--add-data(比如.txt)和--add-binary(程序可能依赖其他.exe命令)参数指定
# --add-data和--add-binary参数实际是2个文件,在windows是通过;分号区分复制前和后的,在linux的符号是:。
# 下边的语句就是将项目的data/excel/订单记录表.xlsx文件复制到C:\Users\lenovo\PycharmProjects\程序打包文件\myscript\data\excel文件夹下,myscript\data\excel会自动创建。
pyinstaller -D --windowed --distpath='C:\Users\xxx\xxx\xx' --name='TYQT' --icon='icon.ico' --add-data=data/excel/订单记录表.xlsx;./data/excel myscript.py
嵌入式打包
下载嵌入式版本的python
链接: https://www.python.org/downloads/windows/
配置环境
解压该压缩包,进入该文件夹里,
更改python310._pth文件里面的内容:
只有导入了site,才能正常运行程序。也要把上级文件夹(…)加进去,因为最终我们的Python代码会放在这个文件夹的上级。
下载get-pip.py文件
链接: https://bootstrap.pypa.io/pip/
将get-pip.py放到python解释器同级目录
进入该文件夹,打开cmd
.\python.exe get-pip.py
得到生成的两个文件夹Lib、Scripts:
进入Scripts文件夹,打开cmd,用这个文件夹的pip进行安装你自己的程序所需要的第三方库
无参调用
建立script文件, 在文件夹内编写main.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import sys
BASE_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
print(BASE_PATH)
sys.path.append(BASE_PATH)
print("hello, 123456!")
print("按任意键继续...")
input() # 这里input()函数会暂停并等待用户输入
通过bat文件调用,run.bat
.\python-3.10.11-embed-amd64\python.exe .\script\main.py
pause
通过exe文件调用,需先编写run.c
#include <stdlib.h>
int main()
{
system(".\\python-3.10.11-embed-amd64\\python.exe .\\script\\main.py");
}
编写run.c, 得到run.exe
整个文件夹的目录
去除第三方库,整个项目只有19M,压缩后只有8M
可完善
安装第三库失败时,可在python环境版本相同时,直接copy
将py文件转为pyd加密后,再调用
考虑带参数的调用
考虑带界面的调用
nuitka打包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple nuitka
nuitka --follow-import-to=mdl main.py
nuitka --standalone --output-dir=out2 main.py
nuitka --onefile --output-dir=out3 main.py 不建议使用
python -m nuitka --standalone --remove-output {your_python_program_name}.py
nuitka --mingw64 --show-progress --standalone --disable-console --enable-plugin=matplotlib --plugin-enable=numpy --onefile --remove-output camera.py
nuitka打包后的exe体积小了,在本机运行无问题;但迁移到其他计算机会遇到各种问题。