如何将python脚本打包成10多M的exe?

Python文件如何打包exe文件 它是一个基于Distutils的实用程序,允许我们在Windows计算机上运行用Python编写的应用程序,而无需用户安装Python。注意:在Windows上安装PyInstaller之前,需要安装PyWin32(下载地址为-http://sourceforge.net/projects/pywin32/files/pywin32/Build%20217/)。如果打包功,最终的可执行文件app.exe和任何相关文件将放在dist目录中,如果该目录不存在,将创建该目录。删除生文件夹是安全的。 阅读详情

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入


标准打包

目前比较常见的打包exe方法都是通过Pyinstaller来实现的,本文也将使用这种常规方法。如果对这块已经很熟悉的小伙伴,可以直接下滑到本文下半部分。

为什么要打包?

众所周知,Python脚本不能在没有安装Python的机器上运行。

那我们如果写了一个数据分析/自动化办公的小脚本,想分享给同事小姐姐使用,可她电脑又没有装Python。

这个时候如果将脚本打包成exe文件,微信发送给她,即使她的电脑上没有安装Python解释器,这个exe程序也能在上面运行。岂不美哉?

 

(当然,想通过帮安装Python跟小姐姐建立感情的话,就当我没说)

(当然,想通过帮安装Python跟小姐姐建立感情的话,就当我没说)

安装Pyinstaller

首先我们要先安装Pyinstaller,直接在cmd使用pip命令

pip install pyinstaller 

如果网速太慢可以切换国内源来加速,本文其他部分直接使用国内源,不再重复注释。

 

pip install -i https://pypi.douban.com/simple/ pyinstaller #豆瓣源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller #清华源

Pyinstaller打包步骤

将其中脚本py_word.py,待处理的表格文件workbook.xlsx,以及准备好的软件图标图片chengzi.ico放在了我电脑的F:\py_word目录下

 

 

1、cmd切换到我们刚刚放文件的目录

 


2、执行命令Pyinstaller -F -w -i chengzi.ico py_word.py,执行过程特别漫长,就没有录制动图。
执行完毕会发现当前目录多了几个文件夹,打开其中名为dist的文件夹。

 

已经生成了一个名为py_word的exe应用程序,并且图标也是我们设置的橙子图案,看来已经成功一半了。

要不运行一下,试试能否正常生成word日报?

 

打包exe后执行

打包exe后执行

 

成功运行,可惜就是文件有点大(339M)

 

Pyinstaller参数详解

说回刚刚执行的命令

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

给大家解释一下其中Pyinstaller的参数,其中-F参数代表制作独立的可执行程序。

-w是指程序启动的时候不会打开命令行。如果不加-w的参数,就会有黑洞洞的控制台窗口出来。比如在刚才的脚本里我加一行print('Hello World!'),那么就不要放-w参数了,不然运行会报错,毕竟Hello World!需要在命令行里打印出来。此外,-w参数在GUI界面时非常有用。

最后的-i chengzi.ico就是指设置自己的图标图案,因为默认打包图片是下图这样的。这个参数也可以写成--icon=chengzi.ico

 

 

最后稍微总结一下:

Pyinstaller -F py_word.py 打包exe

Pyinstaller -F -w py_word.py 不带控制台的打包

Pyinstaller -F -w -i chengzi.ico py_word.py 打包指定exe图标打包

以上三个是比较常用的参数,其他参数详见下表

 

Pyinstaller参数大全

Pyinstaller参数大全

ico图片生成

自己做的软件都喜欢放上自己的图标,不过哪来那么多ico图片呢?

一个是可以找专门的ico图片网站,不过都很小众,图片库也很小。

另一个是可以自己生成,这里就给大家分享一个网站,可以把其他格式图片转成ico格式:https://app.xunjiepdf.com/img2icon/

ico图片格式转换

ico图片格式转换

 

压缩打包

好了,小伙伴们

来到了最激动人心的时刻,刚刚生成的exe实在太大了,300多M的软件程序想用微信传一下都费劲。

我也试过很多方法,比如:修改spec文件自定义打包、pipenv 虚拟环境、使用开源的upx压缩等等,但是往往要么过程比较麻烦,要么成功率不高(压缩成不成功全看脸)。

而我要分享的,是自己一直在用的,最简单且成功率极高的方法——conda创建虚拟环境。

 

Python打包为什么大?

在压缩打包之前,先简单说一下为什么Python打包过大?

Python打包exe,不但体积大而且运行奇慢。解释型语言大都是这个样子,只不过Python尤其突出。要解决大而慢,只能用编译型语言,如C,C++,甚至VB都好很多,体积最小的是汇编。[1]

此外,还有知乎大佬说是因为“Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去,要用纯净的Python来打包。”

所以我们可以模拟一个新环境,其中只安装我们本次打包所必要的工具包即可。

那最适合的就是——虚拟环境了!

虚拟环境

Python创建虚拟环境的方法有很多,而我是个Anaconda忠实用户,如果你跟我一样,那就简单了。(大家也可以使用Virtualenv、Pipenv来设置虚拟环境,善用搜索,方法大同小异)

先记几个命令,很简单

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

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

conda deactivate  #退出虚拟环境

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

 

 

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

 


conda安装的虚拟环境,会把虚拟环境的目录生成在anaconda安装目录下的env目录下。

 

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

安装所需的库

上面我们已经创建并激活了名为aotu虚拟环境,输入conda list可以查看当前虚拟环境里已经安装的库。

 

 

我们打开所要打包的Python脚本,对比上图,发现pandas,docx这两个库还需要额外安装。当然,也不能缺了打包必不可少的pyinstaller库。

 

待打包脚本

待打包脚本


安装库的过程不再赘述

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

安装后再看

 

 

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

Pyinstaller打包步骤

这里就不再重复了,只换个苹果图标试试

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

 

生成

 

 

成功压缩到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

总结一些小坑

1、说起来还是有点玄学,上文中一模一样的过程我在两个电脑都执行过一遍。在其中一个上显示缺少xlrd这个库,安装后成功打包,也是一样的大小。小伙伴们可以在文末获取文件,也试试。

2、在安装库是要注意一些库名,比如docx这个库不要pip install docx,而是需要

pip install python-docx

还有一些库可能因为版本不同导致不能使用,多碰碰壁就好了。
3、为了防止打包时候有些库没安装好,可以先在虚拟环境中执行一下Python脚本。运行无误的话再打包,比较保险。

 

 

4、最后,如果想要删除虚拟环境的话,可执行下方命令

conda remove -n aotu--all 

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

python sdk打包完整教程 在一个典型的 api.py 文件中,通常包含与应用程序的 API 相关的代码,例如路由、请求处理、响应生等。_.py 文件是 Python 包的一个重要组部分,它定义了在导入包时需要执行的初始化代码。它从请求中获取资源的 ID,然后返回该资源的信息。在这个示例中,导入了 api.py 和 database.py 文件中的内容,使得用户在导入 SDK 时可以直接访问到这些内容。确保 README.md 清晰、简洁地介绍了你的 SDK,并提供了足够的信息让用户和开发者了解如何使用和贡献它。 阅读详情

相关推荐

Python打包exe终极方案

众所周知,Python脚本不能在没有安装Python的机器上运行。那我们如果写了一个数据分析/自动化办公的小脚本,想分享给同事小姐姐使用,可她电脑又没有装Python。这个时候如果将脚本打包exe文件,微信发送给她,即使她的电脑上没有安装Python解释器,这个exe程序也能在上面运行。岂不美哉?

weixin_56659172的博客 2万+

Python 打包 exe 指南

本专栏主要包括三部分内容,第一部分为如何将python文件打包exe 文件,Pyinstalle和Nuitka;第二部分为如何制作安装包Nsis和Inno Setup Complier,;第三部分主要讲述一些专业的包,如Pyside6、PySimpleGui、Pandas等在使用Nuitka打包时,遇到的错误汇总。

YumOS的博客 1万+

Python制作小软件——4. 利用PyInstaller打包exe文件

在前面:Python制作小软件——3. 利用PyQt5实现界面中的功能,介绍完了Python中如何呼唤出我们的界面后 最后最重要的就是将我们做好的东西,全部打包一个.exe可执行文件。这里我们使用的是PyInstaller进行封装。(查找过许方法,但是最后还是选择了相对而言最便捷的方法进行封装) 安装PyInstaller 我们还是使用pip进行安装: pip install ...

Kanny 2万+

6种打包Python代码的方法,让你的程序变exe应用!

Python是一种高级编程语言,它具有易学易用、跨平台等优点,因此在开发中得到了广泛的应用。然而,Python代码需要在Python解释器中运行,这对于一些用户来说可能不太方便。因此,将Python代码打包可执行文件(exe)是一种很好的解决方案。本文将介绍6种将Python代码打包exe应用的方式。

lojloj的博客 8万+

py 打包的6种方式

Python打包有几种方式取决于你的需求,以下是常见的几种方式:

qq_33240556的博客 8071

Python脚本打包exe,看这一篇就够了!

1、说起来还是有点玄学,上文中一模一样的过程我在两个电脑都执行过一遍。在其中一个上显示缺少xlrd这个库,安装后打包,也是一样的大小。小伙伴们可以在文末获取文件,也试试。2、在安装库是要注意一些库名,比如docx这个库不要,而是需要还有一些库可能因为版本不同导致不能使用,碰碰壁就好了。3、为了防止打包时候有些库没安装好,可以先在虚拟环境中执行一下Python脚本。运行无误的话再打包,比较保险。4、最后,如果想要删除虚拟环境的话,可执行下方命令。

$firecat利白的代码足迹$ 34万+

别再问我Python打包exe了!(终极版)

大家好,我是小五????《老板又出难题,气得我写了个自动化软件》上次这篇文章中,评论区有好几条留言都是关心如何将python脚本打包10M的?那今天小五就给大家全面总结一下:Pyth...

zhuxiao5的博客 1万+

详细解读Python打包exe教程

标准打包 目前比较常见的打包exe方法都是通过Pyinstaller来实现的,本文也将使用这种常规方法。如果对这块已经很熟悉的小伙伴,可以直接下滑到本文下半部分。 为什么要打包? 众所周知,Python脚本不能在没有安装Python的机器上运行。 那我们如果写了一个数据分析/自动化办公的小脚本,想分享给同事小姐姐使用,可她电脑又没有装Python。 这个时候如果将脚本打包exe文件,微信发送给她,即使她的电脑上没有安装Python解释器,这个exe程序也能在上面运行。岂不美哉? (当然,想

码农-Vax天道的时间宝藏 8492

Python打包exe终极方案,赶紧收藏吧

目前比较常见的打包exe方法都是通过Pyinstaller来实现的,本文也将使用这种常规方法。如果对这块已经很熟悉的小伙伴,可以直接下滑到本文下半部分。 为什么要打包? 众所周知,Python脚本不能在没有安装Python的机器上运行。 那我们如果写了一个数据分析/自动化办公的小脚本,想分享给同事小姐姐使用,可她电脑又没有装Python。 这个时候如果将脚本打包exe文件,微信发送给她,即使她的电脑上没有安装Python解释器,这个exe程序也能在上面运行。岂不美哉? (当然,想通过帮安装P

m0_64355682的博客 1万+

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

这是一个很长的故事,嫌长的直接看最后的结论 事情经过 上周接了个需求,写了个小工具给客户,他要求打包exe文件,这当然不是什么难事。因为除了写Python的,绝大数人电脑里都没有Python编译器,所以打包exe,让用户(windows)双击就可以打开,也算是必备技能了。 直接用Pyinstaller,打开cmder: pyinstaller -Fw E:\test\url_...

qq_24624539的博客 2万+

解决 Python打包exe 文件过大问题的一些方法

前言 之前有做过Python的pyqt桌面应用,当时每次更新打包的时候整个文件下来都需要300~400M,但是一直没有找到合适的方法解决,而是尽量Python少安抓库包,但效果一般,最近找到了解决方法,特此记录,给需要的小伙伴用~ 步骤 1、为什么要打包? 众所周知,Python脚本不能在没有安装Python的机器上运行。 那我们如果写了一个数据分析/自动化办公的小脚本,想分享给同事小姐姐使用,可她电脑又没有装Python。 这个时候如果将脚本打包exe文件,微信发送给她,即使她的电脑上没有安

老鹰的博客 1万+

python3打包exe并压缩,生文件很小

Py程序打包exe文件很同学都会,但是很打包完发现:一个简单的Py程序打包exe文件之后编程几百兆了 Python如何打包exe,以及如何打得足够小。 一、标准打包 目前比较常见的打包exe方法都是通过Pyinstaller来实现的,本文也将使用这种常规方法。如果对这块已经很熟悉的小伙伴,可以直接下滑到本文下半部分。 1、为什么要打包? 众所周知,Python脚本不能在没有安装Python的机器上运行。 那我们如果写了一个数据分析/自动化办公的小脚本,想分享给同事小姐姐使用,可她电脑又没有装Py

Simon的博客 6897

最详细Python打包exe教程,并修改图标,只需30秒

大家好我是邓哥,之前给大家分享PDF转WORD教程中, 大家比较关注的点都在如何将Python文件打包可执行的exe文件。 Python PDF文件转Word格式,3秒完美搞定!(附打包) 今天就单独伶出来给大家讲一下: 大家的问题我总结了有以下几个: 1. 为什么要打包? 2. 环境需求? 3. 如何将Python文件打包exe文件? 4. 如何给exe文件生自己心仪的图标? 5. 如何减小exe文件的体积? 为什么要打包? 众所周知,Python脚本不能在没有

qq_36807888的博客 1万+

如何利用pycharm将py文件打包exe文件

如何利用pycharm将py文件打包exe文件 1、先确保自己有pip(python专门用来管理库的一个工具) 打开pycharm里面的terminal对话框,然后输入代码:python -m pip install --upgrade pip 回车执行,如图: 用pip工具安装pyinstaller 在terminal中输入: pip install pyinstaller 回车执行 安装...

卖瓜小农的博客 1万+
上一篇: Python库大全,建议收藏留用!
下一篇: 将不规则的Python多维数组拉平到一维,你学废了吗?
酸菜鱼编程
博客等级 码龄6年 155粉丝 63原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值