快速实现Python打包exe

Tankard825 等级 341 0 0

一直有读者在问有关Python脚本打包成exe的问题。今天就推荐给大家一篇文章,全面总结一下:Python如何打包成exe,以及如何打得足够小。

标准打包

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

为什么要打包?

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

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

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

快速实现Python打包exe

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

安装Pyinstaller

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

pip install pyinstaller 

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

快速实现Python打包exe

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

Pyinstaller打包步骤

快速实现Python打包exe

1、cmd切换到代码文件所在目录(如果大家感兴趣的话,可以在文末下载获取案例文件)

快速实现Python打包exe

2、执行命令Pyinstaller -F -w -i chengzi.ico py_word.py,执行过程特别漫长,就没有录制动图。

执行完毕会发现当前目录多了几个文件夹,打开其中名为dist的文件夹。

快速实现Python打包exe

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

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

快速实现Python打包exe

打包exe后执行

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

快速实现Python打包exe

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

快速实现Python打包exe

最后稍微总结一下:

Pyinstaller -F py_word.py 打包exe  

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

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

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

快速实现Python打包exe

Pyinstaller参数大全

ico图片生成

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

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

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

快速实现Python打包exe

ico图片格式转换

压缩打包

好了,小伙伴们

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

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

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

快速实现Python打包exe

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的虚拟环境。

快速实现Python打包exe

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

快速实现Python打包exe

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

快速实现Python打包exe

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

快速实现Python打包exe

安装所需的库

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

快速实现Python打包exe

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

快速实现Python打包exe

待打包脚本

安装库的过程不再赘述

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  

安装后再看

快速实现Python打包exe

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

Pyinstaller打包步骤

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

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

快速实现Python打包exe

生成

快速实现Python打包exe

成功压缩到29.8M,如果不导入pandas这位大神,应该就可以10多M了

运行一下,毫无问题

快速实现Python打包exe

最后再简单总结一下虚拟环境+打包的全过程(只三步):

#创建虚拟环境  
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脚本。运行无误的话再打包,比较保险。

快速实现Python打包exe

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

conda remove -n aotu--all 

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

下载链接

如果大家想测试Python打包,手头又没有合适的文件,可以在「python客栈」后台回复“打包”即可获得以下文件:

快速实现Python打包exe

参考资料

[1]

弗拉基米尔: https://www.zhihu.com/question/281858271/answer/613147412

[2]

《别再问我怎么Python打包成exe了!》: https://mp.weixin.qq.com/s/zilDeFunWLG0mBS\_x0vNnA

快速实现Python打包exe

············END············

快速实现Python打包exe

留言送书

快速实现Python打包exe

重磅推荐

快速实现Python打包exe

推荐理由:

(1)实战技能:本书讲解了Python编程从入门到精通可能涉及的100个关键技能。

(2)关键练习:100个关键技能,对应100个关键练习,能学会用。

(3)重点视频:重点、难点,都有视频讲解,降低了学习难度曲线。

赠送奖品:

Python编程宝典:迅速提高编程水平的100个关键技能*4

活动规则**:**

活动截止时我们将从精选留言中选出 四条 走心留言赠送书籍。(每人当月仅限一次中奖机会)

留言要求:

  • 内容与本文相关的留言

  • 每人仅限精选一条留言

另外我们每天还会在文末的留言中随机抽取 3位 小伙伴赠送快速实现Python打包exe6.6元的现金红包,感谢大家一直以来的支持。

截止时间: 2021 年 3 月 7 日 16:00 整

快速实现Python打包exe

昨日留言中奖名单

快速实现Python打包exe

快速实现Python打包exe

快速实现Python打包exe

快速实现Python打包exe

快速实现Python打包exe恭喜三位中奖的童鞋,快加小编微信(Mayyy530)来领奖吧!

快速实现Python打包exe

1、调试Python代码,千万别再用Print了!

2、史上最全Python 操作 Excel库总结!

3、手机上运行 Python?这款工具比 QPython 还好用

快速实现Python打包exe

在看”和“点赞”都是对我们最好的支持 ****快速实现Python打包exe****

收藏
评论区

相关推荐

Python的环境搭建和下载
Python是一个跨平台、可移植的编程语言,因此可在windows、Linux和Mac OS X系统中安装使用。 安装完成后,你会得到Python解释器环境,可以通过终端输入python命令查看本地是否已经按照python以及python版本。这里有一点需要注意的是,如果没有将python的安装目录添加到环境变量中,会报错(python不是内部命令或外部命
快速实现Python打包exe
一直有读者在问有关Python脚本打包成exe的问题。今天就推荐给大家一篇文章,全面总结一下:Python如何打包成exe,以及如何打得足够小。 标准打包 目前比较常见的打包exe方法都是通过Pyinstaller来实现的,本文也将使用这种常规方法。如果对这块已经很熟悉的小伙伴,可以直接下滑到本文下半部分。 为什么要打包? 众所周知,Py
别再问我Python如何打包成exe了!
大家好,我是小五🐶 《老板又出难题,气得我写了个自动化软件》(https://mp.weixin.qq.com/s?__bizMzU5Nzg5ODQ3NQ&mid2247504512&idx1&sn9757d27acbb6c1b570fd4a2d376cd6e3&scene21wechat_redirect) 上次这篇文章中,评论区有好
15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工
本篇文章将给大家介绍 Python 多线程与多进程相关知识,学习完该知识点之后,你的 Python 程序将进入另一个高峰。 <center<font colorred缓解一下视疲劳</font</center 15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工(https://imghelloworld.oss
原来Python绘图也可以这么漂亮,这次真的是学习到了!
(https://imghelloworld.osscnbeijing.aliyuncs.com/8830803f033eeed85783e9058cf08968.png) 作者:朱小五 来源:快学Python 👆人生苦短,快学Python! 最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单介
Python Sanic 高并发服务开发指南
技术基础 AsyncIO Python 3.4 开始引入 AsyncIO(https://docs.python.org/3/library/asyncio.html) 模块,使得 Python 也支持异步 IO。3.5 版本里添加了 async/await 关键字,使得异步 IO 代码编写更加方便。3.6 和 3.7 版本继续进行了完善
我的python总结
建议刚开始学习直接使用ANACONDAhttps://www.anaconda.com/download/配置python环境变量https://docs.python.org/3.6/using/cmdline.htmlenvvarPYTHONMALLOCPython PEP8导包顺序1. Python标准
Python编程基础(快速入门必看
Python编程基础一、Python语言基本语法 Python是一
别再问我Python打包成exe了!(终极版)
大家好,我是小五🐶上次这篇文章中,评论区有好几条留言都是关心如何将python脚本打包成10多M的?那今天小五就给大家全面总结一下:Python如何打包成exe,以及如何打得足够小。标准打包目前比较常见的打包exe方法都是通过Pyinstaller来实现的,本文也将使用这种常规方法。如果对这块已经很熟悉的小伙伴,可以直接下滑到本文下半部分。 为什么要打包?众
python文件的第一行 #!/usr/bin/python3 是什么意思?
python文件的第一行代码通常在脚本语言的第一行会看到: !/usr/bin/env python或 !/usr/bin/python 首先要确定的一点是它不是注释。这两句话的目的都是指出你的python文件用什么可执行程序去运行它。1. !/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释
将python文件打包成exe可运行文件
目前有好几种方法可以将python文件打包成exe应用程序文件,例如py2exe,pyinstaller等,比较下来,还是觉得pyinstaller使用起来比较简单。   首先第一步下载安装pyinstaller,  如果已经安装过python3的用户比较方便,可以使用python3文件下的Scripts文件中的pip安装,python2好像没有,使用pip
10行Python代码自动清理电脑内重复文件,解放双手!
](https://mp.weixin.qq.com/mp/appmsgalbum?actiongetalbum&albumid1337012041701326848&bizMzI1MTUyMjc1Mgwechatredirect) 前言 大家好,又到了Python办公自动化系列。今天分享一个系统层面的自动化案例:「给定一个文件夹,使用Python检查
手把手教你用Python操纵Word自动编写离职报告
前言大家好,我是吴老板,今天给大家分享一篇Python自动化文章。 Python 是自动化处理的一把好手,比如自动编写离职申请!!! 安装 pip install pythondocx i https://pypi.douban.com/simple/ 基本用法 创建一个docx文档from docx import Documentfrom docx.
初窥 Python 的 import 机制
本文适合有 Python 基础的小伙伴进阶学习。 作者:pwwang一、前言本文基于开源项目: https://github.com/pwwang/pythonimportsystem补充扩展讲解,希望能够让读者一文搞懂 Python 的 import 机制。 1.1 什么是 import 机制?通常来讲,在一段 Python 代码中去执行引用另一个模块中
Python基础1——变量、判断、循环、字符串、列表
1 认识python 1.1 认识python计算机识别机器语言,机器语言由二进制0和1组成计算机要执行高级语言,转换方式 1. 编译 : C语言、C++、java。 一次性编译成可执行文件2. 解释 : 一行一行地解释python是解释型语言python解释器、pycharm编辑器举个例子:要给工地煮饭编译:把饭菜都做好,做成盒饭(.exe,.class

热门文章

Vue入门系列之Vue实例详解与生命周期最常见的java面试题汇总

最新文章

Vue入门系列之Vue实例详解与生命周期最常见的java面试题汇总