栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pyside2 学习系列三:PyInstaller打包项目瘦身(超详细的Pyside2 攻略)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pyside2 学习系列三:PyInstaller打包项目瘦身(超详细的Pyside2 攻略)

继上一篇文章打包后 发现包太大了 我们现在开始进行瘦身优化。
本项目的所有演示代码 github可在这里下载。
打包只用的工具为PyInstaller。

1 简单查看包构成2 瘦身方法2.1 打包成单文件2.2 UPX压缩2.2.1 命令行添加地址2.2.2 将UPX路径添加到环境变量 2.3 打包成单文件并UPX压缩2.4 打包成多文件后 删除无用的依赖库 未成功 3 方法对比

1 简单查看包构成

下图中 我们可以看到 我们只是简单的添加了两个ui文件 包大小就显示有98.5 MB。完全不可理解。


进入exe同级目录后发现 主要控件贡献最大的是 Qt的各种ui库 占了80%的内存。目前自己测试了 优化有效的方法有三种加一种失败的方法。

2 瘦身方法 2.1 打包成单文件

打包成单文件 顾名思义就是把所有的dll等库和依赖都打包到exe文件里面去。
我们通过 pyinstaller -h 可以看到 有这么个命令 -F, 默认是-D

 -D, --onedir Create a one-folder bundle containing an executable
 (default)
 -F, --onefile Create a one-file bundled executable.

好的 将我们的打包命令修改为

pyinstaller -w -F pymain.py --add-data formmain.ui;. 
(packenv) C:UsersAdministratordocumentsPyDemo pyinstaller -w -F pymain.py --add-data formmain.ui;. 
71 INFO: PyInstaller: 4.5.1
71 INFO: Python: 3.6.7
72 INFO: Platform: Windows-10-10.0.19041-SP0
79 INFO: wrote C:UsersAdministratordocumentsPyDemopymain.spec
82 INFO: UPX is not available.
82 INFO: Extending PYTHonPATH with paths
[ C:\Users\Administrator\documents\PyDemo ,
 C:\Users\Administrator\documents\PyDemo ]
......
10811 INFO: Updating manifest in C:UsersAdministratordocumentsPyDemobuildpymainrunw.exe.e4rzbi26
10812 INFO: Updating resource type 24 name 1 language 0
10818 INFO: Appending archive to EXE C:UsersAdministratordocumentsPyDemodistpymain.exe
18313 INFO: Building EXE from EXE-00.toc completed successfully.

打包成功后 进入dist 目录查看只有pymain.exe一个文件 显示大小为39.4M

双击 可以运行 但是发现启动速度稍微慢了一点点。

2.2 UPX压缩

除了打包成单个文件外 我们还可以借助压缩工具将我们的依赖库进一步进行压缩。
首先去官网进行下载并解压。
我们将解压后文件夹放入随便一个本地地址 如C:upx-3.96-win64。

PyInstaller 打包默认是开了UPX压缩的 我们可以从打包的log – 82 INFO: UPX is not available. 或者 .spec - upx True,文件里面发现。下面介绍两种进行压缩的命令方法

2.2.1 命令行添加地址

我们使用--upx-dir命令 并且后面接的地址为upx的文件夹地址 不是exe地址。

pyinstaller -w pymain.py --add-data formmain.ui;. --upx-dir C:upx-3.96-win64 

可以看到下面log里面的upx也变更为了167 INFO: UPX is available.

(packenv) C:UsersAdministratordocumentsPyDemo pyinstaller -w pymain.py --add-data formmain.ui;. --upx-dir C:upx-3.96-win64 
71 INFO: PyInstaller: 4.5.1
71 INFO: Python: 3.6.7
73 INFO: Platform: Windows-10-10.0.19041-SP0
75 INFO: wrote C:UsersAdministratordocumentsPyDemopymain.spec
167 INFO: UPX is available.
......
766 INFO: checking COLLECT
3396 INFO: Building COLLECT COLLECT-00.toc
4184 INFO: Building COLLECT COLLECT-00.toc completed successfully.

查看dist的大小为44.2M 运行起来发现启动速度稍微慢了一点点。

2.2.2 将UPX路径添加到环境变量

将本地的C:upx-3.96-win64添加到环境变量并生效后。
重新运行命令

pyinstaller -w pymain.py --add-data formmain.ui;. 

或者运行

pyinstaller pymain.spec

都可以 生成的dist大小同样为为44.2M。
添加到环境变量后方便一下 不用每次都赋值地址。

2.3 打包成单文件并UPX压缩

我们将第二章的UPX添加到环境变量后 再次运行打包单文件的命令试试。

pyinstaller -w -F pymain.py --add-data formmain.ui;. 

输出

(packenv) C:UsersAdministratordocumentsPyDemo pyinstaller -w -F pymain.py --add-data formmain.ui;. 
72 INFO: PyInstaller: 4.5.1
72 INFO: Python: 3.6.7
73 INFO: Platform: Windows-10-10.0.19041-SP0
75 INFO: wrote C:UsersAdministratordocumentsPyDemopymain.spec
162 INFO: UPX is available.
163 INFO: Extending PYTHonPATH with paths
......
8771 INFO: Appending archive to EXE C:UsersAdministratordocumentsPyDemodistpymain.exe
15165 INFO: Building EXE from EXE-00.toc completed successfully.

然后我们惊喜的发现 生成的pymain.exe大小仅有31M。
速度比前两个稍微更慢一点点。

2.4 打包成多文件后 删除无用的依赖库 未成功

在第二章upx压缩后确实发现 qt将所有有用无用的依赖库都加进来了 然而想要删除部分无用的依赖库后 运行exe 报依赖缺失的弹窗。
其他参考网站说可以删除 但是测试失败。不知道是哪个步骤不对。

3 方法对比 方法大小启动速度结论多文件不压缩默认98.5M最快默认选项单文件不压缩39.4M速度比较快适合小工程 只生成一个文件。不能查看依赖库多文件UPX压缩44.2M速度有点慢多文件适合大工程 但是启动速度比较慢单文件UPX压缩31M速度有点慢只有一个文件 包最小 启动速度也比较慢多文件UPX压缩 删除无用依赖 ——测试失败 移除任何依赖都无法运行

综述

包占用最多的是qt的ui库的依赖各种压缩方法都有优缺点 需要结合项目实际使用。

其他章节
Pyside2 学习系列一 创建包含ui文件的项目 超详细的Pyside2 攻略
Pyside2 学习系列二 PyInstaller打包项目exe 超详细的Pyside2 攻略
Pyside2 学习系列三 PyInstaller打包项目瘦身 超详细的Pyside2 攻略

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号