pip install pyinstaller
配合虚拟环境打包
1. 在mac上开发创建虚拟环境
2. 开发。。
3. 开发完毕后:pip freeze > requirements.txt
4. 打开虚拟机,创建虚拟环境
5. 安装依赖库:pip install -r requirements.txt
6. 安装pyinstaller:pip install pyinstaller
7. 打包文件:pyinstaller -F xxx.py
打包成多个文件
pyinstaller -D xx.py
- 打开生成的build文件是编译生成的中间文件可以不用理会
- 优点运行速度相对快一些
- 涉及程序中读写其他文件,不会报错!!
执行程序出错时终端一闪即退,想要看报错信息?
先打开终端cmd,命令 将可执行文件拖拽到终端,执行。
打包成单文件
pyinstaller -F xx.py
其他参数:
- -n: 打包文件/文件夹 重命名
- -i : 图标,.ico
路径问题
import os
PROJECT_PATH = os.path.dirname(__file__)
print(PROJECT_PATH)
打包成单文件时,遇到程序中读取其他文件时会报错?
单文件运行时程序会解压到一个临时文件夹,使用相对路径查找文件会发生报错
解决办法:sys.argv
- 获取程序运行时的文件绝对路径
- os.path.realpath(sys.argv[0]) 可以获取程序运行时的路径
import sys
import os
BASE_DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
with open(os.path.join(BASE_DIR, "config.txt"), mode='r', encoding='utf-8') as fp:
data = fp.read().strip()
print(data)
注意:将config.txt文件与程序文件放在一起。。
动态导包时
再将spec进行打包