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

5b0d1ad6386716d3559d4b2122e3a544.png

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

事情经过

上周接了个需求,写了个小工具给客户,他要求打包成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

7b67f9ff721c75986509f3e5474ba707.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android checkbox 选中事件_使用Vue3.0新特性造轮子 WidgetUI3.0 (Checkbox复选框组件)

"title"标题示例代码:data [ { title: 新日小卫士二代, }, { title: 车子质量不合格, }, { title: 我买的骑士1号仪表台进水怎么回事?, }, { title: 风雅欧妮大灯高低调节, }]"title"标题和"desc"描…

服务器装系统用哪个好,服务器系统重装用哪个系统

服务器系统重装用哪个系统 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。重装裸金属服务器的操作系统。快速发放裸金属服务器支持…

2020图机器学习GNN的四大研究趋势

来源:专知【导读】以图神经网络为代表的图机器学习在近两年成为研究热点之一。近日,图机器学习专家 Sergei Ivanov 为我们解读了他总结出来的 2020 年图机器学习的四大热门趋势,包括图神经网络的理论理解、应用普及、应用、图嵌入框架&#x…

c++ 将文件内容输出到word上_原来PDF转Word可以这么简单,只需要一个键!办公起来真方便...

在职场办公中,我们经常接触到PDF文件,如果让你把PDF转换成Word,你还在束手无策吗?今天就来教你3种方法,如何将PDF转换成Word。01.复制粘贴法相信很多新手都只会【CtrlC/V】,虽然PDF文件不能直接被修改&…

python的类和实例_Python使用类和实例

我们可以使用类来模拟现实世界中的很多情景。类编写好后,你的大部分时间都将花在使用根据类创建的实例上。你需要执行的一个重要任务是修改实例的属性。你可以直接修改实例的属性,也可以编写方法以特定的方式进行修改。 Car类 下面来编写一个表示汽车的类…

iApp最新版无服务器多功能软件库源码

无需服务器的多功能软件库源码分享,仅需添加一个后台应用和一个文档即可 使用教程如下: 在浏览器中打开理想后台地址:http://apps.xiaofei.run/user/ 如果没有账号,请注册一个免费账号。 登录账号后,添加一个后台应…

rpc协议微服务器,RPC协议及实现方式(分布式微服务治理的核心)

分布式微服务治理的核心在于: 微服务和分布式(微服务框架)微服务的最优技术实现目前是: SpringBoot(RPC 框架)分布式的最优技术实现目前是: Thrift,Motan,Dubbo,Spring Cloud(Netflix OSS),Finagle,gRPCRPC 是什么RPC 的全称是 Remote Procedure Call ,是一种进程间…

2019年度全球工程前沿研究报告

来源:JAS自动化学报英文版1. 工程研究前沿1.1 Top 10 工程研究前沿发展态势信息与电子工程领域 Top 10 工程研究前沿涉及电子科学与技术、光学工程与技术、仪器科学与技术、信息与通信工程、计算机科学与技术、控制科学与技术等学科方向。其中,“面向光互…

python取数字第一位数_python基础:8.切片和缩进

0.前言如果可以的话,请先关注(专栏和账号),然后点赞和收藏,最后学习和进步。你的支持是我继续写下去的最大动力,个人定当倾囊而送,不负所望。谢谢!!!1.前提基…

python图像_Python图像处理库(PIL)

Python Imaging Library为您的python程序添加图像处理能力。这个库提供广泛的文件格式支持、高效的内部表示和相当强大的图像处理能力。 核心图像库是为快速访问几种基本像素格式图像设计的。它能为一般的图像处理工具提供一个可靠的基础。 这个Pythonic library可以 装载和保存…

怎么开通手机信息服务器,如何用手机建立网站

如何用手机建立网站 内容精选换一换本文以营销版网站配置为例,介绍如何通过云速建站服务快速创建一个网站。云速建站操作简单方便,只需四步,就可以轻松创建一个网站。建站流程开通网站:包括购买营销版站点、购买精美模板(可选)和安…

cmd测试cuda安装_安装:anaconda+cuda+pytorch+pycharm

每次安装都要在网上各种搜索,为了下次安装的时候简单一点,把对我安装帮助较大的链接整理了一下,整个过程仅供参考:除了pycharm,其他位置均不建议更改默认位置,建议全程可开着cmd1、anaconda安装直接下载&am…

AI会完美的执行我们设定的目标,但这不是一个好消息

来源:混沌巡洋舰导读: 科普网站quanta magazine上一篇名为 Artificial Intelligence Will Do What We Ask. That’s a Problem的文,是关于AI与人际交互时,如何满足更好的理解人类需求。该文的核心观点是:通过教机器理解…

浏览器 刷新页面后回到顶部_推荐 3 个实用的 chrome 浏览器扩展

The Great Suspender同时打开太多的网页会极大的消耗电脑系统资源。The Great Suspender 会把长时间不用的网页冻结,从而释放被这些网页占据的内存和 CPU。扩展安装完成后,会自动跳出设置界面。你可以设置「多久后自动冻结标签」,建议选择一个…

华为服务器更换主板后怎么进系统,服务器更换主板

服务器更换主板 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。如果弹性负载均衡实例使用的证书过期或者其它原因需要更换&#xf…

圆弧半径计算图解_刀尖圆弧半径补偿G40,G41,G42 左补偿右补偿你真的能搞清楚吗...

当编写数控轨迹代码时, 一般是以刀具中心为基准。 但实际中, 刀具通常是 圆形的,刀具中心并不是刀具与加工零件接触的部分, 所以刀具中心的的轨迹应 偏离实际零件轨迹一个刀具半径的距离。 简单的将零件外形的轨迹偏移一个刀具 半…

python tensorflow多个输入_十分钟带你入门最新Python的AI库TensorFlow 2.0

去年11月,TensorFlow庆祝了它的第三个生日。多年来,它成为最受欢迎的ML 框架之一,并拥有了大量的粉丝。TensorFlow庆祝了它的第三个生日谷歌将这个框架融入Java,C ,JavaScript,最重要的是融入主要的数据科学…

人脑为何能够快速学习新知识? 用AI的视角来分析

来源:混沌巡洋舰相比机器,人脑擅长快速的跨任务学习和泛化推理, 或者说叫做卓越的元学习能力。我们说人类站立在这个迅速变化的危险世界面前,快速适应新任务的元学习能力事关生死。这种能力是目前的深度学习人工智能所完全不具备的…

lwip协议栈实现服务器端主动发送,lwip协议栈源码详解说明 - 全文

1、LWIP的结构lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。LWIP(Light weight internet protocol)的主要模块包括:配置模块、初始化模块、Nef模块、mem(memp)模块、…

中希尔排序例题代码_超全面分析十大排序算法

点击上方“零一视界”,选择“星标”公众号资源干货,第一时间送达作者 | 不该相遇在秋天责编 | 程序员小吴前言本文全长 14237 字,配有 70 张图片和动画,和你一起一步步看懂排序算法的运行过程。预计阅读时间 47 分钟,强…