用pyinstaller打包发布含pyqt5模块的程序
最近打算尝试用Python3来写Qt5程序,毕竟C++对我来说不够熟悉,语法也过于复杂,还是Python得心应手些。
首先要解决的一大问题就是程序的打包发布了,不然好不容易写了个应用,只能在自己机器上跑,不能在没有配置开发环境的电脑上运行,应用的局限性就很大了。
本文详实记录了从.py文件打包发布成可直接运行的.exe文件的步骤。所用的工具是pyinstaller(3.2.1),注意:此版本不支持Python3.6环境,仅支持Python 2.7, 3.3, 3.4和3.5。参见Welcome to PyInstaller official website。
测试环境:
Win 7 (x64)
Python 3.5.3(x86)
PyQt5 (5.8.1)
安装pyinstaller
pip install pyinstaller
如果你电脑上没安装pywin32,此命令会一同安装pypiwin32。
此时如果直接尝试打包好像能打包成功,但是应用程序会闪退。原因是pyinstaller无法判断pyqt动态链接库的位置。解决方法:在打包时指明pyqt动态链接库的位置。
切换到要打包的.py文件所在的目录,在此路径打开命令行:
pyinstaller –paths “D:\Program Files (x86)\Python35-32\Lib\site-packages\PyQt5\Qt\bin” test.py
其中,–paths后跟着的是本机pyqt动态链接库的位置,test.py是打包的文件。
打包后的应用程序在当前目录下的dist文件夹下,执行程序发现仍然会有个控制台窗口弹出,这是因为没有在打包时输入对应的参数。
pyinstaller –paths “D:\Program Files (x86)\Python35-32\Lib\site-packages\PyQt5\Qt\bin” -Fw test.py
-F的效果是打包成一个单文件,-w的效果是取消控制台。
也可以把pyqt的动态链接库路径添加到系统的环境变量中,这样就可以不用每次输入一长串的paths参数。