Python 代码打包为 exe 全攻略
目前 Python 程序打包成 Windows 可执行文件(.exe)的方案已经非常成熟,主要有以下 6 种主流/常用的方式:
| 排名 | 工具名称 | 是否打包解释器 | 文件体积 | 启动速度 | 兼容性 | 维护活跃度 | 推荐场景 | 难度 |
|---|---|---|---|---|---|---|---|---|
| 1 | PyInstaller | 是 | 中~大 | 较慢 | ★★★★★ | 非常活跃 | 几乎所有场景首选 | ★★☆ |
| 2 | Nuitka | 编译为 C → exe | 中~小 | 很快 | ★★★★☆ | 活跃 | 追求速度 & 体积小的项目 | ★★★ |
| 3 | PyOxidizer | Rust 打包 | 中~小 | 很快 | ★★★★ | 活跃 | 追求极致启动速度 & 现代化 | ★★★★ |
| 4 | cx_Freeze | 是 | 中 | 较慢 | ★★★★ | 一般 | 简单脚本、跨平台需求 | ★★☆ |
| 5 | py2exe | 是 | 中~大 | 较慢 | ★★★ | 较少维护 | 极老项目兼容(Python 3 支持一般) | ★★☆ |
| 6 | Shiv / PEX | 不打包,zipapp | 非常小 | 快 | ★★★★ | 活跃 | 命令行工具、分发给有 Python 环境的人 | ★★☆ |
当前最推荐的排序
- PyInstaller → 稳定、生态好、文档完善
- Nuitka → 性能更好、体积更小(强烈推荐尝试)
- PyOxidizer → 极致追求启动速度与现代化
- cx_Freeze / Shiv(特定场景)
下面逐一详细说明原理、步骤和常见坑。
1. PyInstaller(使用量最大,推荐入门首选)
原理 把 Python 解释器 + 你的代码 + 所有依赖打包到一个文件夹或单个 exe 文件中。运行时会先解压到临时目录,然后执行。
基本步骤
# 1. 安装
pip install pyinstaller
# 2. 简单打包(单个文件)
pyinstaller -F your_script.py
# 3. 常用参数组合(推荐)
pyinstaller \
-F \
--noconsole \
--icon=app.ico \
--add-data "images;images" \
--hidden-import=pkg_resources \
--clean \
your_script.py

