PyInstaller 使用UPX压缩减少exe大小
解压原理:是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。用户执行的只是这个外壳程序。当执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。加壳:其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。UPX是一个著名的压缩壳,主要功能是压缩PE
1. 背景
Python打包成exe文件一大痛点就是文件size过大,而使用UPX压缩可以改善一些(但还是不能根本解决)
UPX (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器
UPX是一个著名的压缩壳,主要功能是压缩PE文件(比如exe,dll等文件),
UPX压缩的技术原理:
加壳:其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。
解压原理:是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。当加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。
2. 下载UPX
先在官网或github下载UPX exe:
下载后,解压得到upx.exe:
3. 使用UPX
直接在pyinstaller命令指定upx目录,–upx-dir
pyinstaller --upx-dir “C:\UPX”
或者 将upx.exe放入当前 python/conda的环境目录下,
这样Pyinstaller打包时,就可以自动检测并使用UPX压缩:
加入UPX前:
加入UPX后:
压缩效果根据实际代码情况,我这里找了一个pyqt6的应用程序,实测可减少4M左右的size大小:
博主热门文章推荐:
一篇读懂系列:
LoRa Mesh系列:
网络安全系列:
- ATECC508A芯片开发笔记(一):初识加密芯片
- SHA/HMAC/AES-CBC/CTR 算法执行效率及RAM消耗 测试结果
- 常见加密/签名/哈希算法性能比较 (多平台 AES/DES, DH, ECDSA, RSA等)
- AES加解密效率测试(纯软件AES128/256)–以嵌入式Cortex-M0与M3 平台为例
嵌入式开发系列:
- 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
- IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
- Linux内核编译配置(Menuconfig)、制作文件系统 详细步骤
- Android底层调用C代码(JNI实现)
- 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
- Android/Linux设备有线&无线 双网共存(同时上内、外网)
AI / 机器学习系列:
- AI: 机器学习必须懂的几个术语:Lable、Feature、Model…
- AI:卷积神经网络CNN 解决过拟合的方法 (Overcome Overfitting)
- AI: 什么是机器学习的数据清洗(Data Cleaning)
- AI: 机器学习的模型是如何训练的?(在试错中学习)
- 数据可视化:TensorboardX安装及使用(安装测试+实例演示)
更多推荐
所有评论(0)