这是一个很长的故事,嫌长的直接看最后的结论

事情经过

上周接了个需求,写了个小工具给客户,他要求打包成exe文件,这当然不是什么难事。因为除了写Python的,绝大多数人电脑里都没有Python编译器,所以打包成exe,让用户(windows)双击就可以打开,也算是必备技能了。

直接用Pyinstaller,打开cmder:

pyinstaller -Fw E:testurl_crawler.py

(-F 是打包成一个文件,-w是不出现调试窗口,因为我的小工具里有GUI,所以不用默认的调试窗口)

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

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

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

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

于是赶紧上网查了一下,pipenv pyinstaller,没有搜到有用的信息,干脆自己试一试,反正pipenv操作不麻烦。

打开cmder:

#建立虚拟环境
pipenv install
#进入虚拟环境
pipenv shell
#安装模块
pip install 小工具.py里面用到的模块
#打包的模块也要安装
pip install pyinstaller
#开始打包
pyinstaller -Fw E:testurl_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:testurl_crawler.py

anaconda 怎么安装xlrd_Pyinstaller打包,文件太大了怎么办?相关推荐

  1. 解决Pyinstaller打包文件太大的办法(绝对有效,亲测!!!)

    Pyinstaller打包文件太大 1. 问题原因 在Anaconda下打包会将很多没有用到的模块打包进去,最终导致exe文件特别大. 2. 解决方案 通过pipenv建立一个纯净的Python虚拟环 ...

  2. 阿里二面:Redis 中的 AOF 文件太大了怎么办?

    一.前言 写这篇文章的目的是来自我的一位粉丝的投稿,说面试阿里被问到了这个问题.不得不说阿里的面试问的都挺有质量,一般的我们只会关注 Redis 的两种持久化方式 RDB 和 AOF.但老周这里盲猜面 ...

  3. 小程序开发过程中,图片过多,导致打包文件太大的解决方式

    小程序开发过程中,图片过多,导致打包文件太大 小程序中,除了必须的一些tabbar图片,其他都可以放置在资源服务器上,用url进行引用.不然会因为图片太大使小程序打包后超过2M,不能发行.查了一些资料 ...

  4. Python打包exe程序(pyinstaller)以及打包文件太大的解决方法

    编写的python项目,如何在没有python环境的电脑中运行? 打包成exe可执行程序即可 本文章可以教会你如何将python项目打包成exe可执行程序,以及打包后文件太大该如何解决! 来了来了,开 ...

  5. 电脑上的PDF文件太大了怎么办?

    如果PDF文件体积太大,就会占用电脑的存储容量,也有因为文件体积太大导致没办法发送给他人,遇到这些情况,我们应该如何解决以上两种情况?我们需要考虑的就是如何压缩文件的体积以及如何拆分PDF文件的体积. ...

  6. pythom打包文件太大_从SQL注入到整站打包与本地搭建

    一.前言 如题,由于是在已知有一处sql注入的情况下才接手进行的后续操作,因此前面信息搜集则一笔带过. 二.信息搜集 目标是个本地的传销站点其大致信息为IIS+ASP.NET+安全狗.腾讯云. 三.B ...

  7. PDF文件太大了,如何免费压缩变小?

    PDF太大怎么变小?我们在日常工作中很多地方都需要用到PDF文件,有时通过聊天软件会因为过大无法成功发送,有时提交资料也会提示超过系统大小,那么有没有免费的压缩PDF,其他达到指定大小的方法呢? 首先 ...

  8. python编译exe文件太大了_python编译windows下可执行的exe文件

    python编译windows下可执行的exe文件的操作流程: 1.在安装python环境的windows下,安装 pyinstaller,请在dos下执行如下命令: pip install pyin ...

  9. PDF文件太大了怎么办,如何压缩PDF且不改变清晰度

    如何压缩PDF且不改变清晰度?有时候处理大文件并不容易,比如因为附件大小限制,大型的PDF文件可能在共享的时候出现一些问题,这就需要一些方法来减小PDF文件的大小.不过一定程度上减小了PDF文件的大小 ...

最新文章

  1. 【XAudio2】7.如何加载音频数据文件
  2. Oracle RAC在思科UCS上的应用
  3. 网络上经典的DOS小命令
  4. 使用Docker-镜像命令练习
  5. 【蓝桥杯每日一练】 汉诺塔
  6. mysql配置连接远程_MySql配置远程访问
  7. 江苏省职称计算机考试internet,江苏省计算机职称考试题库及答案
  8. Wijmo 更优美的jQuery UI部件集:在安全站点使用Wijmo控件
  9. Bailian2677 Bailian3865 肿瘤检测【基础】
  10. 【java笔记】静态static关键字
  11. 3D建模的通用文件格式
  12. ssms mysql_SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法...
  13. SSS1629USB麦克风方案设计原理
  14. alias别名设置及删除
  15. Synopsys ICC 笔记
  16. Android搜索框searchView的使用
  17. matlab tikz,TeX系列: matlab2tikz--matlab图形数据转化为tikz命令
  18. 基于S7–1500的单部六层电梯教程(六)
  19. 原生APP开发与WEB APP开发的区别
  20. 【html】设置图片编码格式

热门文章

  1. python获取股票数据_python根据股票代码获取当前数据
  2. python中的列表及注意事项
  3. 计算机考研英语什么时候考试,计算机考研:早期复习三大注意事项
  4. 排得更好VS估得更准VS搜的更全「推荐、广告、搜索」算法间到底有什么区别?...
  5. 预训练语言模型真的是世界模型?
  6. 浅谈事理图谱认知:系统体系+领域收敛+人机协同+辅助范式
  7. Transformer and set Trasformer
  8. 运算符 优先级 结合性
  9. 04.MyBatis别名的设置和类型转换器
  10. 开源社区慌不慌?又一个 Linux 发行版宣告死亡