Python Qt 学习笔记(四) 发布程序
安装Python打包工具
pip install pyinstaller
PyInstaller 支持 Python 2.7 和 Python 3.3 以后的版本。
支持在 Windows, Mac OS X, Linux 系统上打包出 可执行程序。
打包
将之前写的Qt界面程序打包,进入要打包的py文件所在目录,在命令行里执行下面命令
pyinstaller stats.py --noconsole --hidden-import PySide2.QtXml # 注意PySide2.QtXml一定要严格大小写!
其中
--noconsole
指定不要命令行窗口,否则我们的程序运行的时候,还会多一个黑窗口。建议大家可以先去掉这个参数,等确定运行成功后,再加上参数重新制作exe。因为这个黑窗口可以显示出程序的报错,这样我们容易找到问题的线索。
--hidden-import PySide2.QtXml
参数是因为这个 QtXml库是动态导入,PyInstaller没法分析出来,需要我们告诉它。
然后会在当前目录下生成两个文件夹build和dist,生成的可执行应用程序就在dist里
注意:由于程序动态加载了ui程序,打包时并没有将那个statis.ui打包进去,可以手动将它放进包里。
双击运行
程序图标
添加主窗口图标
通过下面代码,可更改主窗口
1 from PySide2.QtGui import QIcon 2 3 app = QApplication([]) 4 # 加载 icon 5 app.setWindowIcon(QIcon('logo.png'))
注意:这些图标png文件,在使用PyInstaller创建可执行程序时,也要拷贝到程序所在目录。否则可执行程序运行后不会显示图标。
运行
应用程序图标
应用程序图标是放在可执行程序里面的资源。
可以在PyInstaller创建可执行程序时,通过参数 --icon="logo.ico"
指定。
比如
pyinstaller stats.py --noconsole --hidden-import PySide2.QtXml --icon="logo.ico"
注意参数一定是存在的ico文件,不能是png等图片文件。
如果你只有png文件,可以通过在线的png转ico文件网站,生成ico
注意:这些应用程序图标ico文件,在使用PyInstaller创建可执行程序时,不需要要拷贝到程序所在目录。因为它已经被嵌入可执行程序了。
打包后查看可能图标并没有变
网上搜了搜,原因是Windows资源管理器对图标有缓存问题
解决办法
1、将打包的exe文件复制到另外的一个地方,有时重启stats.exe进程也可以修复。
2、更改文件查看方式即 调整为大图标、中图标、小图标等,stats.exe进程会更新缓存
3、打包时添加参数--onefile