打包命令
pyinstaller -Fw XXXX.py
其中 -F 表示只生成单个的可执行文件,否则会生成大量的其他文件。一般会选择 -F 选项。
-w选项,表示消除控制台窗口,不加就会在运行程序的同时打开一个控制台。
Linux环境下的打包
基于Ubuntu下的pyinstaller程序打包比较顺利,没有问题。由于需要在windows下运行程序,因此不得不在windows下面也打包程序,然而,却遇到了很多问题。
windows环境下打包
不得不说,在windows下面的问题还是蛮多的,下面按照顺序一一解答所遇到的问题。
python pyinstaller RecursionError:maximum recursion depth exceeded。
错误原因:打包过程中,递归层数超过限制。
解决方案:按照下面的步骤:
- 控制台输入pyinstaller -Fw XXX.py,等等打包出错。
- 找到 XXX.spec文件,在文件的第二行开始添加下面两行:
import sys
sys.setrecursionlimit(5000) # 5000表示运行递归的层数,可自行修改 - 控制台输入 pyinstaller XXX.spec
python pyinstaller cannot find existing PyQt5 plugin directories
解决了上面的问题,往往还有这个问题,错误详细信息如下(不同的电脑不同):
**Exception:**
Cannot find existing PyQt5 plugin directories
Paths checked: **C:/qt64/qt_1544645195969/_h_env/Library/plugins/**
解决方案
- 手动创建错误信息中提示的路径,比如上面的错误信息就是要建立:
C:/qt64/qt_1544645195969/_h_env/Library/plugins/ - 从anaconda安装位置下面搜索pyqt5qmlplugin.dll 这个文件,拷贝到上述的目录下。如果你不是使用的anaconda环境,或者找不到,最简单的办法就是在你觉得可能的目录下面搜索pyqt5qmlplugin.dll。
python pyinstaller ‘utf-8’ code can’t decode byte 0xce in position 123:invalid …
错误原因:编码格式不对,很大可能是你的程序是从linux环境下复制下来的。
解决方案:
- (pychram)控制台输入 chcp 65001 ,如果不是pychram的IDE,试试这个命令是否有效吧
- 终结方法是将程序中的所有中文注释删除
This application failed to start because it could not find or load the Qt platform plugin “windows”
错误原因:windows平台的弊端吧,反正Linux下没这些毛病。
解决方案:
- 如果你是使用的anaconda,就到其安装目录下搜索platforms目录(有可能会找到很多个,一个个试试)。
- 如果你是普通python环境,反正就是到相关目录下搜索platfroms ,一个个试试。
最后一个问题,就是你的程序过大,打包失败。
错误原因:使用了anaconda,依赖包太多,所以比较大。
解决方案:新建一个环境,怎么建立,见链接:
https://blog.csdn.net/wskzgz/article/details/88993910
好了,就是这样,我在打包过程中,遇到了上面所有问题,花了半天一夜才全部解决。