python 生成exe 太大了_Python 打包成 exe,太大了该怎么解决?

 蓝色智慧 发表于 2021年06月22日 软件编程  25
蓝色智慧
LV 7 [大学]
最后在线:77天前
加入时间:1年前
主帖:227  跟帖:5
上周某同事接了个需求,写了个小工具给客户,他要求打包成exe文件,这固然不是什么难事。由于除了写Python的,绝大多数人电脑里都没有Python编译器,因此打包成exe,让用户(windows)双击就能够打开,也算是必备技能了。web

因此小编在这里告诉你们:遇到Python打包成 exe太大了,咱们该怎么去解决?shell

直接用Pyinstaller,打开cmder:flask

pyinstaller -Fw E:\test\url_crawler.py

(-F 是打包成一个文件,-w是不出现调试窗口,由于本身的小工具里有GUI,因此不用默认的调试窗口)windows

等了很久,终于完成打包,一看文件,嚯,200M!怪不得打包了这么久…dom

上网查了下资料,有人说,Anaconda里内置了不少库,打包的时候打包了不少没必要要的模块进去,要用纯净的Python来打包。svg

有点道理,想着装虚拟机时间更长,准备拿出闲置的笔记本,从新装个Python来打包。工具

可刚巧最近在学flask的时候,用到pipenv,虽然还不懂pipenv的强大之处,但知道它是个管理虚拟环境和包的工具,因而想着能不能用pipenv来建立一个新的python编译器以运行pyinstaller进行打包。学习

因而赶忙上网查了一下,pipenv pyinstaller,没有搜到有用的信息,干脆本身试一试,反正pipenv操做不麻烦。优化

打开cmder:

进群:851211580 可获取海量Python学习资料+大牛指导学习

#创建虚拟环境

pipenv install

#进入虚拟环境

pipenv shell

#安装模块

pip install 小工具.py里面用到的模块

#打包的模块也要安装

pip install pyinstaller

#开始打包

pyinstaller -Fw E:\test\url_crawler.py

打包完成,一看大小,11M!成功!

后来改了需求,又改了一下源代码,而后换了个目录用pipenv从新打包,结果打包完又变回200M!尝试了无数次,怎么也回不到过去的20M!我都怀疑以前的20M是个人幻觉了。

不过不管如何要先交差,200M的“小“工具,用户体验确定不行,因此我就用排除法,看看是哪一个模块占的体积大,再想办法优化。最早怀疑的是GUI,我几乎坚决果断地认定是它,我用的是PySimpleGUI(强烈推荐,基于tkinter),先把PySimpleGUI的内容注释掉,再进行打包,大家猜打包完有多大?

198M!

看来是我错怪他了,通过几回排除,发现了罪魁祸首就是:fake_useragent

这个库是用来假装请求头的,主要是我懒得复制user-agent,因此问题不大,把fake_useragent注释掉,本身手动粘贴一个user-agent就好了

#from fake_useragent import UserAgent

#ua = UserAgent()

#headers = {'user-agent':ua.random}

headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36'}

不用fake_useragent,打包成exe是 14M,已经不错了.

结论

关键点就一个:要在虚拟环境里安装pyinstaller

若是你没有在虚拟环境中安装pyinstaller,你一样可使用pyinstaller命令,可是调用的是你系统本来的那个python编译器,内含不少关联库,致使即便在虚拟环境中,你打包的exe文件仍然很是大。

另一点要注意的是:要在虚拟环境里安装好你py文件中调用的库,否则打包出来也无法正常运行。

最后再复习一下正确流程 (前提是安装好pipenv):

#创建虚拟环境

pipenv install

#进入虚拟环境(上一步可省略,由于没有虚拟环境的话会自动创建一个)

pipenv shell

#安装模块

pip install requests pyquery pysimplegui fake_useragent

#打包的模块也要安装

pip install pyinstaller

#开始打包

pyinstaller -Fw E:\test\url_crawler.py
————————————————
版权声明:本文为CSDN博主「weixin_39648469」的原创文章,遵循CC 4.0 BY-SA版权协议。
原文链接:https://blog.csdn.net/weixin_39648469/article/details/111796733
论坛主帖
231
论坛跟帖
2
在线访客
2
今日主帖
0
今日跟帖
0
今日注册
0
183
http://www.76w.net/sq/index.php/gentie.html
http://www.76w.net/sq/index.php/postzan.html
http://www.76w.net/sq/index.php/postcai.html
http://www.76w.net/sq/index.php/postshoucang.html
http://www.76w.net/sq/index.php/gentiezan.html
http://www.76w.net/sq/index.php/gentiecai.html
http://www.76w.net/sq/index.php/huifu.html
http://www.76w.net/sq/index.php/xiugai.html
http://www.76w.net/sq/index.php/shanchugentie.html
1
XzA=
1
© 2022 天慧网·互动社区 版权所有
Powered by JianYuLunTan
蒙ICP备2021000971号-1
http://www.76w.net/sq/index.php/feedback.html
http://www.76w.net/sq/index.php/qiandao.html
http://www.76w.net/sq/index.php/denglu.html
0
http://www.76w.net/sq/index.php/adenglu.html
剑鱼论坛