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 (the Ultimate Packer for eXecutables) 是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% , 这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过 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更大。

未完待续。。。

posted @ 2019-05-10 17:58  書劍飄零  阅读(1183)  评论(0编辑  收藏  举报