使用工具:Pyinstaller
1 准备信息
本python项目文件中有:
多个.py文件
文本文件夹:data,含一个.pkl和xml文件
venv:环境所需的包,如imutils、numpy、pyqt5等
项目文件路径为 C:\Users\ray\Desktop\auto_rec_new(供下面参考使用)
2 生成.spec文件
按Shift同时右键整个项目所在文件夹,点击"在此处打开powerShell窗口",并输入
pyi-makespec -w xxx.py
xxx为项目启动文件的名称
3 配置spec文件
2步执行后文件夹中会生成三个文件:xxx.spec、dist、build,打开xxx.spec
1 添加当前路径:
如下图第五行文字所示,设置项目文件夹的路径
SETUP_DIR = 'C:\\Users\\ray\\Desktop\\auto_rec_new\\'
2 添加相关.py文件
将项目相关的.py文件路径添加到Analysis中,最好都放在SETUP_DIR这个路径下,这样的话就只用写文件名就行了;如果文件在子目录中,需写成相对路径或绝对路径(绝对路径亲测没问题,相对路径没试过)
3 设置当前路径
在pathex后添加当前路径,也就是SETUP_DIR去掉后面两个”\\”
4 配置文本文件
文本文件已知包括的有.pkl和.xml文件,欢迎读者在评论区扩充!
在项目路径下创建文件夹data,并把文本文件都放进去(此处记得要将代码中调用这些文本文件的路径也一并改了)
随后在.spec的datas行写:
datas=[(SETUP_DIR+'data','data')],
4 打包文件
同2步一样,打开shell命令窗口
输入(xxx.py仍为项目启动文件):
pyinstaller -F -w xxx.py
5 运行程序
运行successfully后可在dist目录下找到.exe文件,直接执行即可
6 常见报错
1 缺少qtwebengine_locale
报错为Unable to find \PyQt5\Qt\translations\qtwebengine_locale
在cmd中输入:
pip install PyQtWebEngine
2 递归次数过多
报错为RecursionError: maximum recursion depth exceeded while calling a Python object
在.spec最上面添加下述代码(括号中数字可以按需修改),可以参考上面的.spec文件截图:
import sys
sys.setrecursionlimit(10000)