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

py免杀研究最后一步就是将py打包成exe文件 常用pyinstaller但是打包后的文件大小通常为4M左右 使用UPX压缩文件也没有明显效果 想请教一下有没有其他的打包exe姿势,可以生成小体积独立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%以上