python +pyqt 程序打包
打包命令
打包需要用到Pyinstaller这个模块
1、 需要安装pyinstaller; 安装方法:使用 pip install pyinstaller
2、用Anaconda Prompt黑窗口 cd到待打包的文件目录
3、输入执行:pyinstaller -w -F xx\xx\
xxx.py
-w: 直接发布的exe应用带命令行调试窗口,在指令内加入-w命令可以屏蔽掉命令框(调试阶段可不加-w, 最终发布时加入-w参数)
-F: 这里是大写。使用-F指令可以把应用打包成一个独立的exe文件,否则是一个带各种dll和依赖文件的文件夹
-p :这个指令后面可以增加pyinstaller搜索模块的路径。因为应用打包涉及的模块很多。这里可以自己添加路径
遇到的问题及解决方法
1.MouduleNotFoundError:No module named **
打包完运行有可能会遇到未找到模块或库。
解决方法:找到相应模块包的位置,然后在pyinstaller -w -F xx\xx\
xxx.py
中再加 -p 路径
即pyinstaller -p 路径 -w -F xx\xx\
xxx.py
2.This application failed to start because it could not find or load the Qt platform plugin “windows” in “”.
如果用到了pyqt做界面,依赖库需要包含platforms里的qwindow.dll ,会出现找不到Qt platform plugin “windows”问题。
解决办法:拷贝pyqt的platforms文件夹到生成的可执行程序同级目录下,如我的是:C:\Anaconda\pkgs\qt-5.6.2-vc14h6f8c307_12\Library\plugins
3.FileNotFoundError 未找到文件
如果你在pycharm中用 右键make_directory as–>sources path将子文件夹加入source_path 在python能正常运行,但pyinstaller没有把这些文件夹里的py文件包括进去,所以会导致会出现未找到相关文件。
解决办法:把程序所用的所有文件放在同一目录下 或者用 -p 加路径
4.资源文件
有一些代码需要调用一些图片和资源文件的,这是不会自动导入的,需要你自己手动复制进去才行。不然exe文件运行时命令窗口会报错找不到这个文件。
若代码里有加载资源文件(图片、gif、图标、qss样式表等) ,如果用的是相对路径,则相对于生成的可执行程序目录需有此资源文件。比如 ”./resource/picture/1.png”,在 生成的可执行程序目录下 需有resource文件夹,resource里有picture文件夹,picture里有1.png图片。
5.打包的文件很大
解决方法:用什么函数导什么函数,不要import整个库,因为这样会把整个库打包进去,没用到的库函数会占用了很大的空间
6.gif显示问题
我是用了Qlabel+Qmovie来播放gif图的,在pycharm显示完全没问题,打包完之后就播放不了
看了网上的解决方法,把C:\Anaconda\pkgs\qt-5.6.2-vc14h6f8c307_12\Library\plugins\imageformats下的qgif.dll复制到目录里,png图片文件能显示,但是gif图还是播放不了,目前还没解决。
如果有人有解决方法,请告诉我。