将 Python 项目打包成 EXE 可执行文件

2022/5/12 9:47:11

本文主要是介绍将 Python 项目打包成 EXE 可执行文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

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

图片

Python 打包为什么大?

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

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

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

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

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

虚拟环境

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

先记几个命令,很简单

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

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

conda deactivate  #退出虚拟环境
  • 1
  • 2
  • 3
  • 4
  • 5

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

图片

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

图片

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

图片

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

图片

安装所需的库

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

图片

我们打开所要打包的Python脚本,对比上图,发现pandasdocx这两个库还需要额外安装。当然,也不能缺了打包必不可少的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
  • 1
  • 2
  • 3
  • 4
  • 5

安装后再看

图片

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

Pyinstaller打包步骤

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

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

图片

生成

图片

成功压缩到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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

总结一些小坑

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

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

pip install python-docx
  • 1

还有一些库可能因为版本不同导致不能使用,多碰碰壁就好了。

3、为了防止打包时候有些库没安装好,可以先在虚拟环境中执行一下Python脚本。运行无误的话再打包,比较保险。

图片

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

conda remove -n aotu--all 
  • 1

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



这篇关于将 Python 项目打包成 EXE 可执行文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程