pyinstaller打包问题总结
1、pyinstaller常见用法
-w:禁止cmd窗口
-F:打包为单文件
比如:pyinstaller -w -F test.py
2、QT中UI转py文件
pyuic5 test.ui -o testui.py
转换后使用:
from testui import Ui_MainWindow class App(QMainWindow, Ui_MainWindow):
....
3、图片等文件打包问题
若需要把图片、文本等其他需要读取的文件打包倒单EXE文件。
首先建立qrc文件,格式如下:
<RCC> <qresource prefix="/image"> <file>back.jpg</file> </qresource> </RCC>
再用pyrcc5命令将qrc文件转换为py文件。
比如:pyrcc5 test.qrc -o testqrc.py
此时qrc文件中包含的图片等文件会转换为字节码形式写在py文件中。
转换后的使用:
from testqrc import * image = QImage(':image/back.jpg')
4、进一步压缩打包后exe体积
由于pyinstaller打包时是打包整个python环境,所以想要减少体积可以新建一个python虚拟环境,在该环境下只安装需要用到的库,然后进行打包。
如果还想进一步打包的话可以使用upx压缩。
upx是开源的:
https://github.com/upx/upx
百度词条的介绍:
如何使用:
先下载upx
#下载对应系统版本
https://github.com/upx/upx/releases
下载完成后将其放在我们需要打包的py文件所在的目录:
然后运行打包命令即可。
可以看到打包时upx压缩自动生效,整个时长会比正常打包时有所增加。
打包完成后exe体积比未使用upx打包时大大降低。
如若遇到打包后运行错误,请用--upx-exclude=vcruntime140.dll选项重新打包,比如这样:
pyinstaller -w -F --upx-exclude=vcruntime140.dll .\serial_test.py
5、用Nuitka打包python项目
nuitka则是将python源码转成C++(这里得到的是二进制的pyd文件,防止了反编译),然后再编译成可执行文件。最终的运行速度得到了提升。
打包体积可能比pyinstaller更小(未亲自验证),使用复杂度比pyinstaller更大。
未完待续。。。
作者:書劍飄零
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。