Featured image of post python打包可执行文件

python打包可执行文件

前言

记录一些关于 Python 打包为可执行文件相关内容

Pyinstaller

pyinstaller 是一个将 Python 代码打包成可执行文件的工具,它可以将 Python 代码打包成 Windows、Linux、MacOS 等平台的可执行文件。
大多数情况下,Pyinstaller 可以很好地处理 Python 代码的打包工作。网上关于 Pyinstaller 的教程也很多,这里就不再赘述了,只做简单的使用介绍,具体的使用方法可以参考官方文档

版本兼容

Pyinstaller 支持大多数 Python 版本,包括 Python 2.7 和 Python 3.8+

安装

1
pip install pyinstaller

使用

1
pyinstaller -F xxx.py

-F 参数表示打包成单个可执行文件,xxx.py 是你要打包的 python 脚本。

注意

  • 打包的时候需要保证你的 python 脚本中的依赖包已经安装,否则打包后的可执行文件可能无法运行。

Nuitka

Nuitka 是另一个将 Python 代码编译成可执行文件的工具,它可以将 Python 代码编译成 Windows、Linux、MacOS 等平台的可执行文件。Nuitka 是我个人比较喜欢的一个工具,它的打包后的可执行文件体积比 Pyinstaller 要小很多,而且由于经过编译,运行速度也会更快。

版本兼容

Nuitka 能够完全兼容 Python 2.6、 2.7 以及 3.4 以后的版本。

安装

1
pip install nuitka

使用

nuitka 的使用方法也很简单,只需要一个命令就可以将你的 python 脚本打包成可执行文件。当然,Nuitka 也支持更多的参数,可以根据自己的需求来使用。关于更多的参数可以参考官方文档

1
nuitka --standalone xxx.py

--standalone 参数表示打包成单个可执行文件,xxx.py 是你要打包的 python 脚本。

注意

Nuitka 会将你的 python 脚本编译成 C 语言代码,然后再编译成可执行文件,所以编译过程可能会比较慢,但是编译后的可执行文件体积会比 Pyinstaller 要小很多。并且,你需要一个 C 语言编译器来编译 C 代码,所以在使用 Nuitka 之前,你需要安装一个 C 语言编译器。当然现在的 Nuitka 会在编译过程中自动下载编译器。

Pystand

Pystand是一个 Python 独立部署环境。Python 3.5 以后,Windows 下面都有一个 Embedded Python 的独立 Python 运行环境,这个 PyStand 就是配合 Embedded Python 使用的。

版本兼容

Pystand 主要以 3.8 发行,其余的版本可以自己编译。仅支持 Windows

使用

以下内容来自 Pystand 使用说明

  • 用 CMake 生成 PyStand.exe (或者到 Release 里下个现成的)。
  • 下载 Python Embedded 版本,放到 PyStand.exe 所在目录的 runtime 子目录内。
  • 注意 Python Embedded 如果是 32 位,PyStand 配置 CMake 时也需要指明 -A Win32。
  • 在 PyStand.exe 所在目录创建 Python 源代码 PyStand.int。
  • 双击 PyStand.exe 就会运行 PyStand.int 里的代码。
  • 可以编译成命令行版方便调试,CMake 的时候加 -DPYSTAND_CONSOLE=ON 即可。

安装依赖

用一个同 Embedded Python 相同版本的 Python 做一个 venv,然后 pip 独立安装好模块后将 site-packages 内对应的包复制到 PyStand.exe 的 site-packages 下直接使用。

cx_Freeze

cx_Freeze 是另一个将 Python 代码打包成可执行文件的工具,它可以将 Python 代码打包成 Windows、Linux、MacOS 等平台的可执行文件。

版本兼容

cx_Freeze 支持 Python 3.9 以及更高版本。

安装

1
pip install --upgrade cx_Freeze

使用

有三种不同的方法来使用 cx_Freeze,此处只介绍最简单的一种。其他两种方法可以参考官方文档

1
cxfreeze xxx.py --target-dir dist

--target-dir dist 表示打包后的可执行文件会放在 dist 文件夹中,xxx.py 是你要打包的 python 脚本。

注意

Windows 上的 Python 3.9-3.13 需要Microsoft Visual C++ Redistributable,并且由于安装方式的原因,cx_Freeze 默认不会自动复制它。

Py2exe

py2exe 是一个将 Python 代码打包成 Windows 平台可执行文件的工具。

版本兼容

py2exe 支持大多数 Python 版本

安装

1
pip install py2exe

使用

笔者并没有使用过 py2exe,所以这里只是简单介绍一下使用方法,具体的使用方法可以参考官方文档

1
python setup.py py2exe

setup.py 是一个配置文件,用来配置打包的一些参数。

注意

py2exe 只支持 Windows 平台,如果你要打包的是 Linux 或 MacOS 的可执行文件,那么 py2exe 就不适用了。

总结

本人只用过 Pyinstaller、Nuitka、PyStand 这三种打包方式,其他的打包方式相关说明是本人阅读官方文档所得。