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

标准打包

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

为什么要打包?

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

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

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

安装 Pyinstaller

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

pip install pyinstaller 

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

一条命令就可以换源:

pip config set global.index-url http://pypi.douban.com/simple

当然,我们还可以直接使用:

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

Pyinstaller 打包步骤

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

2、执行命令

Pyinstaller -F -w main.py

执行过程特别漫长,就没有录制动图。

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

已经生成了一个名为 main 的 exe 应用程序,看来已经成功一半了。自行运行是否成功。

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

3. Pyinstaller 参数详解

说回刚刚执行的命令

Pyinstaller -F -w main.py

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

-w 是指程序启动的时候不会打开命令行。如果不加 -w 的参数,就会有黑洞洞的控制台窗口出来。比如在刚才的脚本里我加一行 

print('Hello World!'),那么就不要放 -w 参数了,不然运行会报错,毕竟 Hello World! 需要在命令行里打印出来。此外,-w 参数在 GUI 界面时非常有用。

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

最后稍微总结一下:

Pyinstaller -F py_word.py 打包exe

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

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

Python 打包为什么大?

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

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

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

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

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容