本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Python 打包 exe,如何减少文件大小?
使用虚拟环境
由于python在打包为exe会将系统下所有包一并打包。 因此我们可以使用pipenv命令构建虚拟环境以完成打包。
使用方法
安装pipenv
pip install pipenv
执行命令构建虚拟环境
pipenv install
执行命令进入虚拟环境
pipenv shell
安装所需要的依赖包
pip install <Package names>
安装打包程序
pip install pyinstaller
运行打包命令
pyinstaller -F <your program> -w
备注:如需添加图标,可使用-i logo.ico 。图标文件必须为ico格式,可使用网上的在线图片格式转换器将您的图片转换为ico格式。
打包即可发现体积小于使用原系统打包。
除此之外,我们还可以使用upx压缩
https://github.com/upx/upx
UPX (the Ultimate Packer for eXecutables) 是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% , 这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过 UPX 压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行, 对于支持的大多数格式没有运行时间或内存的不利后果。
选择python对应版本的upx并下载 github.com/upx/upx/rel…
下载后将其移动至需要打包的python文件的文件夹下解压,使压缩包内文件与需要打包的python程序处于同一文件夹下。
pyinstaller -F <your program> -w --upx-exclude=vcruntime140.dll
禁用vcruntime140.dll原因可参考以下issues
cv2打包错误
pyinstaller打包错误:ERROR: recursion is detected during loading of “cv2“ binary extensions.
降低cv2版本。
使用环境:pyintaller=4.7
pyinstaller和cv2版本存在兼容问题,卸载已有的opencv-python,安装opencv-python==4.5.3.56即可。