PyInstaller:把 Python 脚本打包成可执行文件

0 阅读3分钟

PyInstaller:把 Python 脚本打包成可执行文件

PyInstaller 是一个 Python 打包工具,GitHub Star 数 13,000+。

正文顶部截图

README区域截图

PyInstaller 解决了一个常见问题:你的 Python 脚本写得再好,对方机器上没有 Python 环境就跑不了。PyInstaller 把脚本和它所有依赖打包在一起,对方拿到后直接双击就能运行,不需要装 Python 解释器,也不用装任何第三方模块。

它的工作流程是这样的:读取你写的 Python 脚本,分析代码,找出所有需要用到的模块和库。然后把这些文件的副本连同 Python 解释器一起收集起来,放到一个文件夹中。也可以选择打包成单个可执行文件。

这个项目已经维护了二十多年,在 Python 社区里知名度很高。支持 Windows、macOS 和 Linux 三大平台。需要说明的是它并不是交叉编译器,在 Windows 上打包出来的程序只能在 Windows 运行,想得到 macOS 的程序需要在 macOS 上执行打包操作。AIX、Solaris、FreeBSD 和 OpenBSD 上也可以使用,不过这些平台不在官方持续集成测试范围内,稳定性靠社区反馈来保证。

Python 版本支持情况:3.8 到 3.14 都在支持范围内。有个特例是 Python 3.10.0,因为自身携带的 Bug 导致 PyInstaller 无法正常工作,需要避开。Python 3.15 的测试版目前也不支持。

功能特点

PyInstaller 的功能特性主要集中在几个方面。

跨平台能力。它利用操作系统本身的动态库加载机制来打包,兼容性更好。Windows、Linux、macOS 各自对应不同的打包逻辑,但都是开箱即用。

主流库支持。numpy、PyQt5、wxPython、matplotlib 这些常用库直接就能打包,不需要额外配置。大量第三方包所需的特殊处理逻辑也已经内置在 PyInstaller 中,用户不需要自己去折腾。

签名和安全。macOS 上支持代码签名,打包出来的应用可以通过 Gatekeeper 校验。Windows 上会自动打包 MS Visual C++ DLL,避免目标机器缺少运行库。

安装

通过 pip 安装:

pip install pyinstaller

使用方法

基本用法很简单,对主脚本执行打包命令:

pyinstaller /path/to/yourscript.py

详细的使用说明可以查阅官方文档。打包完成后,在 dist 目录下就能找到生成的可执行文件或文件夹。

硬件架构覆盖情况

Windows 支持 32 位、64 位和 ARM64。macOS 支持 x86_64 和 arm64,也可以构建 universal2 格式的二进制包,前提是 Python 本身和所有依赖也编译成了 universal2。

Linux 的架构支持最广,涵盖 x86_64、aarch64、i686、ppc64le、s390x,glibc 和 musl libc 发行版都能用。另外树莓派用户在配置 piwheels 索引后,可以通过 pip 正常安装和使用。

非主流平台的支持

FreeBSD、Solaris、AIX 等平台社区版也有支持。AIX 上要求 AIX 6.1 或更新版本,且不能使用静态链接的 Python 库。在这些平台上首次使用需要编译 PyInstaller 的引导加载程序,pip install 时会自动完成,前提是系统安装了 C 编译器(gcc 或 clang)和 zlib 开发头文件。

如果需要排查打包过程中的问题,官方提供了调试指南。GitHub 讨论区里也有大量用户贡献的解决方案,邮件列表同样开放。

PyInstaller 是 Python 生态中应用最广的打包方案之一。如果项目需要分发给没有 Python 环境的用户,这是一个经过长期验证的选择。