以下文章来源于凹凸数据 ,作者朱小五 大家好,我是早起。 一直有读者在后台问有关Python脚本打包成exe的问题。 今天就给大家全面总结一下:Python如何打包成exe,以及如何打得足够小。 标准打包目前比较常见的打包exe方法都是通过 为什么要打包?众所周知,Python脚本不能在没有安装Python的机器上运行。 那我们如果写了一个数据分析/自动化办公的小脚本,想分享给同事小姐姐使用,可她电脑又没有装Python。 这个时候如果将脚本打包成exe文件,微信发送给她,即使她的电脑上没有安装Python解释器,这个exe程序也能在上面运行。岂不美哉? (当然,想通过帮安装Python跟小姐姐建立感情的话,就当我没说) 安装Pyinstaller首先我们要先安装Pyinstaller,直接在cmd使用pip命令
如果网速太慢可以切换国内源来加速,本文其他部分直接使用国内源,不再重复注释。
Pyinstaller打包步骤这里我们拿之前《Python自动化办公 | 同事要我帮忙补写178份Word日报!》这篇的python代码,作为案例来演示。将其中脚本 1、cmd切换到我们刚刚放文件的目录 2、执行命令Pyinstaller -F -w -i chengzi.ico py_word.py,执行过程特别漫长,就没有录制动图。 执行完毕会发现当前目录多了几个文件夹,打开其中名为dist的文件夹。 已经生成了一个名为 要不运行一下,试试能否正常生成word日报? 打包exe后执行 成功运行,可惜就是文件有点大(339M) Pyinstaller参数详解说回刚刚执行的命令
给大家解释一下其中Pyinstaller的参数,其中
最后的 最后稍微总结一下:
以上三个是比较常用的参数,其他参数详见下表 Pyinstaller参数大全 ico图片生成自己做的软件都喜欢放上自己的图标,不过哪来那么多ico图片呢? 一个是可以找专门的ico图片网站,不过都很小众,图片库也很小。 另一个是可以自己生成,这里就给大家分享一个网站,可以把其他格式图片转成ico格式:https://app./img2icon/ ico图片格式转换 压缩打包好了,小伙伴们 来到了最激动人心的时刻,刚刚生成的exe实在太大了,300多M的软件程序想用微信传一下都费劲。 我也试过很多方法,比如:修改spec文件自定义打包、pipenv 虚拟环境、使用开源的upx压缩等等,但是往往要么过程比较麻烦,要么成功率不高(压缩成不成功全看脸)。 而我要分享的,是自己一直在用的,最简单且成功率极高的方法——conda创建虚拟环境。 Python打包为什么大?在压缩打包之前,先简单说一下为什么Python打包过大? Python打包exe,不但体积大而且运行奇慢。解释型语言大都是这个样子,只不过Python尤其突出。要解决大而慢,只能用编译型语言,如C,C ,甚至VB都好很多,体积最小的是汇编。[1] 此外,还有知乎大佬说是因为“Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去,要用纯净的Python来打包。” 所以我们可以模拟一个新环境,其中只安装我们本次打包所必要的工具包即可。 那最适合的就是——虚拟环境了! 虚拟环境Python创建虚拟环境的方法有很多,而我是个Anaconda忠实用户,如果你跟我一样,那就简单了。(大家也可以使用Virtualenv、Pipenv来设置虚拟环境,善用搜索,方法大同小异) 先记几个命令,很简单
从开始菜单运行“Anaconda Prompt”,出现的界面输入创建虚拟环境的指令。成功创建了一个名字为 在创建过程中需要回复(y/n),Yes,再激活虚拟环境 conda安装的虚拟环境,会把虚拟环境的目录生成在anaconda安装目录下的env目录下。 当然我们也可以在刚刚的窗口,使用命令 安装所需的库上面我们已经创建并激活了名为 我们打开所要打包的Python脚本,对比上图,发现 待打包脚本 安装库的过程不再赘述
安装后再看 已成功安装,还有一些因为这几个库所附带安装的,就不管他们了。 Pyinstaller打包步骤这里就不再重复了,只换个苹果图标试试
生成 成功压缩到29.8M,如果不导入pandas这位大神,应该就可以10多M了 运行一下,毫无问题 最后再简单总结一下虚拟环境 打包的全过程(只三步):
总结一些小坑1、说起来还是有点玄学,上文中一模一样的过程我在两个电脑都执行过一遍。在其中一个上显示缺少 2、在安装库是要注意一些库名,比如docx这个库不要
还有一些库可能因为版本不同导致不能使用,多碰碰壁就好了。 3、为了防止打包时候有些库没安装好,可以先在虚拟环境中执行一下Python脚本。运行无误的话再打包,比较保险。 4、最后,如果想要删除虚拟环境的话,可执行下方命令
5、打包为exe的话,版本尽量选择python3.6 32位版本,因为win64位系统向下兼容32位程序,但是如果不考虑32位系统的话无所谓,直接python64位版本直接打包就可以,只是只能在win64位系统上跑。[2] 下载链接如果大家想测试Python打包,手头又没有合适的文件,可以在「早起Python」后台回复“打包”即可获得以下文件: 参考资料[1] 弗拉基米尔: https://www.zhihu.com/question/281858271/answer/613147412 [2] 《别再问我怎么Python打包成exe了!》: https://mp.weixin.qq.com/s/zilDeFunWLG0mBS_x0vNnA |
|
来自: Levy_X > 《Python学习资料》