前言
本节我们学习如何使用Pyinstaller打包pyqt5应用程序,pyqt5的打包要比之前文章中讲述的tkinter的打包稍微复杂点,主要区别在于pyqt5打包需要导入Qt相关库,笔者开始打包时候遇到错误,网上众说纷纭,有说把python3版本调到python3.5.2的,也会有说pyinstaller3.6安装包版本有问题,需要用源码安装......
一、基础知识
1.pyinstaller简介
PyInstaller的主要目标是开箱即用地与第三方软件包兼容。这意味着,使用PyInstaller,使外部软件包正常工作所需的所有技巧已经集成在PyInstaller本身中,因此不需要用户干预。
和其他打包工具相比,PyInstaller的主要优势在于PyInstaller可与Python 2.7和3.5-3.7一起使用,由于透明压缩,它可以构建较小的可执行文件,它是完全多平台的,并且使用OS支持来加载动态库,从而确保完全兼容。
1.pyinstaller安装
安装命令:
pip3 installer pyinstaller
查看python3版本号,输入:
python3--version
可以看到,本文我们使用的python3版本是3.7.6,为了避免发生异常,建议大家和我保持一致,或者尽量使用3.5.0 3.5.2版本。
二、实例
1. 打开第一节1-setup代码
打开第一节代码,然后输入python3 run.py,运行程序
本节我们要做的就是使用pyinstaller打包python文件为exe可执行程序。
2. 变量 frozen 注入到 sys
import sys, osif hasattr(sys, 'frozen'): os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
这段代码和cx_freeze库相关,在 windows 下,cx_freeze库用于将程序打包成 exe,会将一个变量 frozen 注入到 sys 中。
将其添加到入口文件的最上方即可
3. 打包成一个带调试窗口的exe
输入打包命令:
pyinstaller -F run.py
可以看到在dist目录下生成了run.exe可执行程序双击执行,可以看到会有一个黑色的背景框,这个类似windows下CMD窗口,可以显示print等打印出来的调试信息
4. 打包成一个不带调试窗口的exe
输入打包命令:
pyinstaller -F -w run.py
同样会在dist目录下生成run.exe文件,双击执行
5. 打包成带图标的exe
可以看到上述两种情况打包,程序图标都是系统默认的图标,这次我们为run.exe加个自己的皮肤,需要创建一个icons文件夹,放进去自定义.ico图像,我这里是icon.ico
输入打包命令:
pyinstaller -F -w run.py -i D:/study/python/pyqt/pyqt5/demos/1-setup/icons/icon.ico
可以看到dist下的run.exe仍然是默认皮肤,这个是系统的问题,将run.exe拖到桌面,可以看到皮肤已经更新成功了。
三、结语
(1) 调试
如果打包后程序提示仍然是无法运行,可以尝试在CMD命令窗口下直接运行程序,如果运行失败,控制台会打印提示信息,我之前遇到过用法错误导致运行不起来的问题,通过这种方式可以查看到具体的错误提示,修改后重新打包即可。
作者:小驿
寄语:如果决定要出发,就不要把时间浪费在犹豫上!