打包 Python 程序文件:pyinstaller 实现
本文介绍基于 Python 语言中的 pyinstaller 模块,将写好的.py 格式的 Python 代码及其所用到的所有第三方库打包,生成.exe 格式的可执行文件,从而方便地在其他环境、其他电脑中直接执行这一可执行文件的方法。
有时,我们希望将自己电脑上的某个 Python 文件发到另一台电脑上使用;而如果这个 Python 文件中包含了大量的第三方库,那么首先不仅需要保证另一台电脑上有 Python 环境,而且还需要配置好这些第三方库——这无疑是比较麻烦的。
但是,我们可以选择将 Python 文件(及其所包含的全部第三方库)打包为.exe 文件,然后发送给其他电脑并直接加以执行;而这个打包的过程,基于 Python 语言中的 pyinstaller 模块,就可以非常方便地进行。本文就介绍一下这个打包的具体方法。
但是需要注意,pyinstaller 模块打包后的可执行文件是不可以跨平台使用的——例如,在 Windows 上将一个 Python 代码文件打包,得到的可执行文件就只能在 Windows 上使用,而在 Linux 和 Mac 上是不可以使用的;如果大家有这样跨平台使用的需求,pyinstaller 模块的官方网站则建议借助 Wine 来代替实现。
首先,我们需要配置一下 Python 语言中的 pyinstaller 模块。这里需要注意,如果大家待打包的这个 Python 代码文件是放在了虚拟环境中,那么这个 pyinstaller 模块也需要配置在这个虚拟环境中。
在本文中,因为我的待打包文件就是在虚拟环境中,所以首先通过如下的代码进入这一虚拟环境中:
随后,输入如下的代码,即可开始配置 pyinstaller 模块。
运行上述代码,如下图所示:
![](https://static001.geekbang.org/infoq/bf/bf4da80cbab499c868952436c3809add.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
随后,找到我们需要加以打包的 Python 代码文件;如下图所示,这个紫色框内的 Alignment.py 文件就是本文中需要打包的 Python 代码文件。
![](https://static001.geekbang.org/infoq/a7/a77b65bf3c48f32f93ce8007b773a545.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
那么,首先通过 cd 命令,进入待打包文件所在的路径;在本文中,这里就是执行如下的代码:
随后,进入这个文件夹内,我们即可通过如下的命令,将 Alignment.py 文件加以打包。
其中,-F 表示对 Alignment.py 文件打包时,只生成唯一的 1 个.exe 可执行文件;一般情况下,我们都是带上这个-F 参数来运行打包命令的,因为只生成 1 个.exe 可执行文件的话,更方便后期我们对这个可执行文件的分享。
此外,我们还可以在上述代码中加入如下的其他常见参数;当然,除此之外还会有很多其他的参数,具体大家参考 pyinstaller 模块的官方网站即可。
-h:显示关于 pyinstaller 命令的帮助。
-D:如果不想要前面-F 的效果,那就用这个-D,从而生成多个可执行文件。
-i:如果大家想修改打包后生成的可执行文件的图标,就将自己的图标文件放在这个参数后。
-w:如果大家待打包的 Python 代码会生成一个 GUI 界面,那么需要添加此参数,否则后期打开可执行文件时,你的 GUI 界面可能会被自动弹出的黑色的控制台遮盖导致无法正常显示。
对于大多数需求而言,我们就用上述的那一句代码即可。执行上述代码,出现如下图所示的界面,表明已经开始打包了。
![](https://static001.geekbang.org/infoq/73/7351049104b4c299af67042605b8eed3.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
稍等片刻(如果待打包的 Python 代码文件中导入的第三方库比较多,那么打包的时间相对就会长一点,但整体不会太久),出现如下图所示的提示,表明打包已经成功完成了。
![](https://static001.geekbang.org/infoq/ca/ca78653340f778eb288e632356bdeb33.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
此时,我们在与待打包 Alignment.py 文件同目录的路径中,可以看到 pyinstaller 模块对其打包后生成的 3 个新的文件夹或文件,如下图所示:
![](https://static001.geekbang.org/infoq/f6/f6529ac7c35e2f9fd5320cce2bbcb4cf.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
其中,打开 dist 这个文件夹,其中的.exe 可执行文件,就是我们打包后的文件。
![](https://static001.geekbang.org/infoq/82/82af61ec863a6d124c1d2a74a6176bcc.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
接下来,在这台电脑,或者是其他人的电脑中,运行上图中的这个.exe 可执行文件,就会实现和我们当初待打包的 Alignment.py 文件相同的功能。
如下图所示,我这里因为原本的 Alignment.py 文件是一个对数据加以计算的文件,所以运行打包后的可执行文件时,就会出现一个黑色的控制台,而没有其他的变化。
![](https://static001.geekbang.org/infoq/ff/ff8af438ebf870e1bba9dc03076b4a40.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
至此,大功告成。
作者:疯狂学习 GIS
链接:https://juejin.cn/post/7372082380482740258
评论