#利用cx_freeze打包Python3+PyQt5程序
将Python程序编译成exe,目前网上主要有3种方法
- py2exe
- pyinstaller
- cx_freeze
据说py2exe最有名,但是打包的程序最大。pyinstaller打包效果最好,但是也作为麻烦。我使用的机器环境是win10 64位+32位的Python3,因此无法使用只支持Python2的py2exe。使用pyinstaller又出现了很多问题,总之无法实现编译。所以最后还是采用了cx_freeze。
使用cx_freeze之前,首先进行安装。可以上cx_freeze的官网去直接下载。
官网地址:http://sourceforge.net/projects/cx-freeze/files/ 安装官网说明方法安装即可
我因为已经安装了pip3,所以使用pip一键安装。
安装命令
pip3 install cx_freeze
安装完以后,进入到自己的Python3安装目录,利用命令行进入script文件夹。可以看到存在cx_freeze的相关安装文件
cxfreeze-postinstall
cxfreeze-quickstart
cxfreeze
但是却并没有网上说的cxfreeze.bat文件。此时,需要利用Python运行cxfreeze-postinstall文件,才会出现相应安装后的批处理文件。
python cxfreeze-postinstall
运行完毕后,就可以运行相关命令看安装是否成功
cxfreeze -h
显示出帮助命令就表示安装成功。
利用cxfreeze打包Python程序语法如下
cxfreeze 编写的Python程序的入口文件 --target-dir 目标程序所在文件夹
–target-dir命令是指定目标文件家的命令
但要注意,如果这样打包GUI程序,会在程序运行时出现运行命令提示符的黑框
因为自己是编译的PyQt5程序,所以如果要打包的时候没有黑框,应该使用如下打包命令
cxfreeze 编写的Python程序的入口文件 --target-dir 目标程序所在文件夹 --base-name=Win32GUI
这就是我打包出来的结果:
程序运行结果:
OK!打包完毕!
- 但是我也发现存在一定问题。利用cxfreeze打包pyqt程序,生成的软件体积太大。我只是编写的一个自定义浏览器程序,打包完以后230M左右。打包文件中可以看到,PyQt部分所占体积最大,所有的PyQt模块都被导入进目标文件夹。所以可能还要研究怎么样才能实现精简打包,或是再压缩一下体积。