Python 最大的挑战之一是分发。用户需要安装 Python、管理虚拟环境并解决依赖关系,然后才能运行你的应用程序。PyInstaller 通过将 Python 应用程序冻结为可在未安装 Python 的系统上运行的独立可执行文件来解决这个问题。
PyInstaller 分析你的 Python 脚本,发现所有导入的模块和数据文件,并将它们与最小的 Python 解释器一起捆绑到单个可执行文件或目录中。结果是一个可分发的软件包,用户可以像任何原生应用程序一样通过双击来运行。
主要功能
| 功能 | 描述 |
|---|---|
| 跨平台 | 为 Windows、macOS 和 Linux 创建可执行文件 |
| 单文件模式 | 将所有内容捆绑到单个可执行文件中 |
| 自动依赖检测 | 查找并包含所有导入的模块 |
| 隐藏导入支持 | 针对动态导入的手动指定 |
| 数据文件捆绑 | 包含图像、配置和资源文件 |
构建流程
flowchart LR
A[Python 脚本] --> B[PyInstaller 分析]
B --> C[依赖发现]
C --> D{找到导入}
D -->|标准库| E[已捆绑]
D -->|第三方| E
D -->|数据文件| E
E --> F[构建产物]
F --> G{输出模式}
G -->|单文件| H[单个 EXE/APP]
G -->|单目录| I[包含所有文件的目录]
G -->|自定义| J[Spec 文件控制]PyInstaller 首先分析脚本以了解其依赖树,然后将所有内容捆绑在一起。Spec 文件为高级用户提供了对构建各个方面的精细控制。
平台支持
| 平台 | 可执行文件类型 | 大小(最小) | 备注 |
|---|---|---|---|
| Windows | .exe | 8-15 MB | 也可通过第三方工具支持 .msi |
| macOS | .app 包 | 10-20 MB | 支持代码签名以便分发 |
| Linux | ELF 二进制文件 | 8-15 MB | 不需要运行时依赖 |
何时使用 PyInstaller
PyInstaller 非常适合分发 GUI 应用程序、为非技术团队提供的内部工具、部署到没有 Python 的系统,以及创建工具的便携版本。它并非为 Web 应用程序或服务而设计,在这些场景中服务器端 Python 已经可用。
如需更多信息,请访问 PyInstaller GitHub 仓库 和 官方 PyInstaller 文档。
常见问题
Q:PyInstaller 能将所有内容捆绑到一个文件中吗?
A:可以,使用 --onefile 标志,所有内容都会被压缩到一个可执行文件中。
Q:PyInstaller 能与虚拟环境一起使用吗? A:可以,从应用程序的虚拟环境中运行时效果最佳。
Q:防病毒软件可能会标记 PyInstaller 可执行文件吗? A:有时候会,因为可执行文件包含嵌入式 Python 解释器。代码签名有助于减少误报。
Q:PyInstaller 支持 Python 3.13 吗? A:是的,最新版本支持 Python 3.8 到 3.13。
Q:我可以使用 PyInstaller 混淆我的 Python 代码吗? A:PyInstaller 捆绑的是字节码而非源代码,但它不是真正的混淆器。如需更强的保护,请与加密工具配合使用。
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!