[pyinstaller]如何减小pyinstaller打包体积
平时在使用pyinstaller打包python程序动辄几十M甚至几百M
这边列出常用一些库单独打包的惊人大小
Packages包含 | 大小 |
---|
空 | 10.4M | Pyqt5 | 41.9M | numpy | 324M | Pandas | 498M | numpy+Pandas(两者有重叠部分) | 547M | Mdfreader(自带Pandas和UI界面,会带入QT) | 548M |
不管怎样,我们能让自己写的程序打出来的包越小越好,尽量去减小它的大小。
1. 建立虚拟环境打包是否可以缩小体积呢
此时当前我打出来的包是63.1M
pip install pipenv
#建立虚拟环境
pipenv install
#进入虚拟环境
pipenv shell
#安装模块
pip install 小工具.py里面用到的模块
#打包的模块也要安装
pip install pyinstaller
#开始打包
pyinstaller -Fw main.py
安装完所有的必备的模块,并且打出来的包能正常使用,打包完成是55.9M,相比较之前减少了7.2M
2. 使用upx压缩
上面第一节讲的是在虚拟环境下打包,最后的大小为55.9M,我们以此为基础使用upx压缩看看能减小多少
pyinstaller main.spec
main.spec内容如下
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['F:\x\project\Music_Batch_Download_package'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='Downloader',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None , icon='material\\logo.ico')
最后打包大小为46.2M,相比较于虚拟环境下打包减少了9.7M,效果还是比较明显的。
总结:
通过使用虚拟环境和UPX压缩的方法可以将我的程序从63.1M压缩到了46.2M,压缩比为26%
Reference
pyinstaller打包的exe太大?你需要嵌入式python玄学 前提篇 - 知乎 (zhihu.com) PyInstaller打包详解 | Yu’s Home (gitee.io)
|