10 py打包exe有缩小文件大小姿势吗

请先 登录 后评论

13 个回答

MrHuang

最简单且成功率极高的方法——conda创建虚拟环境。


先记几个命令,很简单:

conda create -n 虚拟环境名字 python==3.6  #创建虚拟环境

conda activate 虚拟环境名字  #激活虚拟环境

conda deactivate  #退出虚拟环境


从开始菜单运行“Anaconda Prompt”,出现的界面输入创建虚拟环境的指令。成功创建了一个名字为aotu,且基于python版本3.6的虚拟环境。

attach-fc2cce644d9f751823c01a36d5f8a9c9d2b2c40d.png

在创建过程中需要回复(y/n),Yes,再激活虚拟环境

attach-e84b07a75f466d4e124109b9dc18d75c610a0886.pngconda安装的虚拟环境,会把虚拟环境的目录生成在anaconda安装目录下的env目录下。

attach-e675f7e7816dd97ae1e65fb59416894cd5ad23d0.png当然我们也可以在刚刚的窗口,使用命令conda info --envs,来查看conda环境下所有的虚拟环境

attach-3102417018eeb1b0ab22e2fd5c5a495561100381.png

安装所需的库
上面我们已经创建并激活了名为aotu虚拟环境,输入conda list可以查看当前虚拟环境里已经安装的库。
attach-625176eec642f18c5cf7b12c3b52b40f38f973f5.png我们打开所要打包的Python脚本,对比上图,发现pandas,docx这两个库还需要额外安装。当然,也不能缺了打包必不可少的pyinstaller库。

attach-188428fa4f7d99d0d24d0e07ebcd9d3156382f5c.png安装库的过程不再赘述

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller


安装后再看

attach-c28db9ec869dcd94473da809a8646008843c4c50.png

已成功安装,还有一些因为这几个库所附带安装的,就不管他们了。

Pyinstaller打包步骤
这里就不再重复了,只换个苹果图标试试

Pyinstaller -F -w -i apple.ico py_word.py

attach-f9eb5c157817c456474a75ab1a6118b39dc4ab60.png生成
attach-fe857c29ecfb0c4091a431519d4061001e6f05d3.png

成功压缩到29.8M,如果不导入pandas这位大神,应该就可以10多M了

运行一下,毫无问题

最后再简单总结一下虚拟环境+打包的全过程(只三步):


#创建虚拟环境

conda create -n aotu python=3.6

#激活虚拟环境

conda activate aotu

#Pyinstaller打包

Pyinstaller -F -w -i apple.ico py_word.py


为了防止打包时候有些库没安装好,可以先在虚拟环境中执行一下Python脚本。运行无误的话再打包,比较保险。
attach-9bad7b5f9979dfbd70ce3b9203ce7daa4d8da2cc.png最后,如果想要删除虚拟环境的话,可执行下方命令:
conda remove -n aotu--all 

打包为exe的话,版本尽量选择python3.6+32位版本,因为win64位系统向下兼容32位程序,但是如果不考虑32位系统的话无所谓,直接python64位版本直接打包就可以,只是只能在win64位系统上跑。







请先 登录 后评论
九尾狐

我目前所知道的没有了,python的打包方式就这么几种。

请先 登录 后评论
F_Lib

pyinstaller 打包exe文件太大,你可以用pipenv 缩小exe的方法去试试,百度有具体方法

请先 登录 后评论
K0u_az

py打包免杀是比较大的,能过国内杀软就行

请先 登录 后评论
带头小哥

试试UPX 这个应该可以压缩一下

请先 登录 后评论
saucerman

没办法,因为压缩了python运行环境

请先 登录 后评论
donky16

参考https://stackoverflow.com/questions/47692213/reducing-size-of-pyinstaller-exe

请先 登录 后评论
Arthur

python免杀,打包都比较大,可以试试使用小众语言区免杀。

请先 登录 后评论
SNCKER
py打包大的原因一般都是默认打包了一些冗余的库,可以配合pipenv只打包必需的库。
请先 登录 后评论
askldfj

1. 换另外一种打包方式

2. pyinstaller文件默认会把官方所有的内置库全打包进去,因此只需要打包时选择生成多个文件参数,然后删除无用库,使用其他语言,写个自解压或者找找开源工具压缩成单个文件,最后使用UPX压缩即可,实测能压缩50%以上

请先 登录 后评论
wesson

不能,他是把第三库和python环境一起打包的,唯一可以压缩的办法就是尽量不导入重复库

请先 登录 后评论
小迪迦

不能,他是把第三库和python环境一起打包的,唯一可以压缩的办法就是尽量不导入重复库

请先 登录 后评论
hqymaster
  1. 优化代码: 确保你的 Python 代码尽可能精简和高效。去除不必要的代码、注释和调试语句,使用更高效的算法和数据结构。

  2. 使用 PyInstaller 或 Py2exe 的参数: PyInstaller 和 Py2exe 是两个常用的 Python 打包工具,它们都提供了一些参数来优化生成的可执行文件大小。例如,你可以尝试使用 PyInstaller 的 --onefile 参数来将所有依赖打包到单个文件中,或者使用 Py2exe 的 optimize 参数来优化生成的字节码。

  3. 排除不必要的依赖项: 检查你的项目依赖项,并删除不必要的库或模块。有时候,你可能会意外地包含了一些不需要的依赖项,这会增加最终可执行文件的大小。

  4. 压缩资源文件: 如果你的项目包含大量的资源文件(如图片、音频等),可以尝试使用压缩工具对这些文件进行压缩,从而减小最终可执行文件的大小。

  5. 使用 UPX 压缩可执行文件: UPX 是一个开源的可执行文件压缩工具,可以将可执行文件的大小减小到较小的程度。你可以尝试使用 UPX 对生成的可执行文件进行压缩,以减小文件大小。

  6. 使用专门的工具: 除了 PyInstaller 和 Py2exe,还有一些专门用于减小 Python 可执行文件大小的工具,如 PyInstaller 的 PyInstaller-loader、PyArmor 等。你可以尝试使用这些工具来进一步减小可执行文件的大小。

请先 登录 后评论