继上一篇文章打包后,发现包太大了,我们现在开始进行瘦身优化。
本项目的所有演示代码: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:\Users\Administrator\Documents\PyDemo>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:\Users\Administrator\Documents\PyDemo\pymain.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:\Users\Administrator\Documents\PyDemo\build\pymain\runw.exe.e4rzbi26
10812 INFO: Updating resource type 24 name 1 language 0
10818 INFO: Appending archive to EXE C:\Users\Administrator\Documents\PyDemo\dist\pymain.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:\Users\Administrator\Documents\PyDemo>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:\Users\Administrator\Documents\PyDemo\pymain.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:\Users\Administrator\Documents\PyDemo>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:\Users\Administrator\Documents\PyDemo\pymain.spec
162 INFO: UPX is available.
163 INFO: Extending PYTHONPATH with paths
......
8771 INFO: Appending archive to EXE C:\Users\Administrator\Documents\PyDemo\dist\pymain.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 攻略)

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

  1. Pyside2 学习系列二:PyInstaller打包项目exe (超详细的Pyside2 攻略)

    继上一篇文章创建了项目后,本章我们进行项目的打包工作. 本项目的所有演示代码:github可在这里下载. 打包只用的工具为PyInstaller. 打包步骤 1 准备环境 1.1 安装`PyInsta ...

  2. caffe学习系列:训练自己的图片集(超详细教程)

    学习的caffe的目的,不是简单的做几个练习,而是最终落实到自己的项目或科研中去.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试的整个流程. 一.数据的准备 有条件的同学,可以去I ...

  3. python pyinstaller 打包项目

    文章目录 一.pyinstaller 打包项目 1.1 安装pyinstaller 1.2 简单打包命令 1.3 命令行指定参数选项方式打包: 1.4 数据绑定和搜索相关的参数选项: 1.5 程序的运 ...

  4. Vue+Electron学习系列 (三) -- 自动更新

    Vue+Electron学习系列 ​​​​​​​1️⃣Vue+Electron学习系列 (一) -- 初识​​​​​​​ 2️⃣ Vue+Electron学习系列 (二) -- 打包发布 3️⃣ Vu ...

  5. idea学习系列三之版本管理工具

    idea学习系列三之版本管理工具 上一篇文章主要介绍了将idea中常用的快捷键,快捷键要想熟练那就得在实际的工作中多使用,刚开始可能很麻烦经常去笔记中找,不过用多了自然就熟练了. 这篇文件将会介绍一下 ...

  6. 数据库MYSQL学习系列三

    数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...

  7. pyinstaller打包项目,运行exe找不到指定模块(自定义/python39.dll等)

    使用pyinstaller打包项目时,遇到了如题所示的问题,于是在网络上查询答案.如果项目仅能编译成功而不能运行为exe文件,那么可移植性.实用性都是不高的,所以这个问题首先需要解决. 浏览多方答案之 ...

  8. SpringBoot-Maven打包压缩瘦身

    SpringBoot-Maven打包压缩瘦身 一.Spring Boot 可执行 jar 分析 1.1 打包 1.2 两种 jar 的比较 1.3 一次打包两个 jar 二.SpringBoot迭代发 ...

  9. 【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)

    前言 上一篇我们介绍了MobileNetV1,主要是将普通Conv转换为dw和pw,但是在dw中训练出来可能会很多0,也就是depthwise部分得到卷积核会废掉,即卷积核参数大部分为0,因为权重数量 ...

最新文章

  1. 如何设计复用性较好的类?
  2. linux不自动创建sda1,linux下头挂载新硬盘(转)
  3. 汽车产业云上多地域高可用消息系统构建
  4. UNIX环境高级编程——pthread_create的问题
  5. 2018.6.5今天跟着视频做了一个提交Todolist
  6. mysql 命令备忘
  7. python怎么和数据库连接_Java和Python都怎么连接数据库
  8. 命令行模式下几个网络命令详解
  9. 13muduo_base库源码分析(四)
  10. linux下redis开机自启动
  11. 【21天python打卡】第15天 python经典案例(1)
  12. 使用git可视化工具上传你修改的代码
  13. 脉动风时程matlab程序,脉动风时程matlab程序.doc
  14. hp服务器3c认证证书,戴尔 Dell PowerEdge R720 服务器3C认证证书,节能认证证书
  15. python删除word表格中的某一行_python读取word 中指定位置的表格及表格数据
  16. NLP入门(十)使用LSTM进行文本情感分析
  17. win10通过开启teredo访问ipv6
  18. composer错误
  19. 教你一招让你高效搞定高品质的H5交互动画
  20. 个人建站赚钱的5种常见方法

热门文章

  1. 户外露营冷藏箱的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. 斐乐第五家高尔夫独立店东莞开业;康莱德酒店及度假村签约西安、南京和成都三家酒店 | 美通企业日报...
  3. Excel如何生成条形码图片?
  4. c语言游戏代码(c语言制作小游戏)
  5. 美国J1签证面签需要准备哪些材料?
  6. 三-五功能/半亮/25%亮/全亮/爆闪/SOS_专用应急灯手电筒IC方案
  7. 微信小程序——弹出并隐藏键盘(带有输入框,可编辑)
  8. 不经意传输协议快速入门
  9. pdf文件转换ppt可编辑_创建,转换和编辑PDF文件的免费工具
  10. 基于BP神经网络的多因素房屋价格预测matlab仿真