Python 脚本打包成 EXE 的 6 种主流方案对比与选型指南
将 Python 脚本转换为 Windows 可执行文件(EXE)是分发应用时的常见需求。市面上工具繁多,选择哪种取决于你的具体场景:是追求易用性、启动速度,还是代码保护?
下面整理了当前最主流的 6 种打包方案,从易用性、文件大小、启动速度及反编译难度等维度进行横向对比。
| 排名 | 方法/工具 | 易用性 | 生成文件大小 | 启动速度 | 运行速度 | 反编译难度 | 典型场景 |
|---|---|---|---|---|---|---|---|
| 1 | PyInstaller | ★★★★★ | 大(onefile 常 50–300MB) | 慢(几秒~几十秒) | 普通 | 低 | 绝大多数 GUI、小工具、初次尝试 |
| 2 | auto-py-to-exe | ★★★★★ | 同 PyInstaller | 同上 | 普通 | 低 | 零基础用户、GUI 操作打包 |
| 3 | Nuitka | ★★★★☆ | 中~小 | 快 | 明显更快(1.5–4×) | 中~高 | 性能敏感、数值计算、想保护代码 |
| 4 | cx_Freeze | ★★★★ | 中 | 较快 | 普通 | 低~中 | 追求启动快、跨平台、自定义 setup.py |
| 5 | PyOxidizer | ★★☆☆☆ | 小~中 | 非常快 | 普通~快 | 中~高 | 极致体积/启动速度、Rust 爱好者 |
| 6 | Shiv / PEX | ★★★ | 小(.pyz) | 普通 | 普通 | 低 | 内部工具分发、需要 Python 环境 |
1. PyInstaller:目前最推荐的起点
PyInstaller 生态最成熟,兼容性最好,社区资源最丰富。对于大多数开发者来说,它是首选方案。
安装很简单:
pip install pyinstaller
常用命令示例
单文件模式(推荐):
pyinstaller -F --noconsole your_script.py
如果需要添加图标、隐藏控制台窗口或包含数据文件:
pyinstaller -F --noconsole --icon=app.ico \
--add-data "images;images" \
--add-data "config.json;." \
--name "MyTool" your_script.py
调试阶段建议先用文件夹模式(-D),这样生成的目录结构清晰,方便排查依赖问题:
pyinstaller -D your_script.py

