【Python】6 种方法轻松将 Python 脚本打包成 EXE 应用

以下是 2025--2026 年最实用的 6 种 Python 脚本打包成 Windows EXE 可执行文件 的主流方法,按易用性 × 普及度 × 实际场景排序。

排名 方法/工具 易用性 生成文件大小 启动速度 运行速度 反编译难度 典型场景 推荐指数 (★5)
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(目前最推荐的起点)

最成熟、兼容性最好、社区最大。

bash 复制代码
# 安装
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

# 调试时先用文件夹模式找问题
pyinstaller -D your_script.py

常见问题解决:

  • 缺少模块 → --hidden-import=numpy.core._methods 等
  • 数据文件丢失 → --add-data 或修改 .spec 文件
  • 杀毒误报 → 用 --onedir 模式,或提交样本给杀软厂商

2. auto-py-to-exe(图形界面,最适合新手)

本质是 PyInstaller 的 GUI 封装。

bash 复制代码
pip install auto-py-to-exe
auto-py-to-exe

优点:点点鼠标就能出 exe,适合演示、快速交付给非技术用户。

缺点:Python 3.11+ 有时兼容性问题,建议用 3.9 或 3.10。

3. Nuitka(追求速度与保护代码的首选)

真正把 Python 转成 C → 编译成原生可执行文件。

bash 复制代码
# 安装(需要 C 编译器:MSVC / MinGW)
pip install nuitka

# 推荐写法(单文件 + 插件)
python -m nuitka --standalone --onefile \
    --enable-plugin=tk-inter \
    --windows-disable-console \
    --windows-icon-from-ico=app.ico \
    --include-data-dir=assets=assets \
    your_script.py

2025--2026 亮点:

  • 运行速度可达 CPython 的 2--4 倍(尤其 numpy/pandas/torch 代码)
  • 反编译难度明显高于 PyInstaller
  • 启动速度通常比 PyInstaller 快很多

缺点:打包时间长(复杂项目可能几分钟到十几分钟)。

4. cx_Freeze(启动快、体积相对友好)

bash 复制代码
pip install cx-freeze

# 创建 setup.py
from cx_Freeze import setup, Executable

setup(
    name="MyApp",
    version="1.0",
    executables=[Executable("main.py", base="Win32GUI")],
    options={
        "build_exe": {
            "packages": ["numpy", "pandas"],
            "include_files": ["config.json", "images/"],
            "excludes": ["tkinter"]  # 如不需要
        }
    }
)

# 打包
python setup.py build
# 或直接生成单文件(需额外配置)

优点:启动比 PyInstaller 快很多,目录结构清晰。

缺点:配置比 PyInstaller 稍麻烦。

5. PyOxidizer(极致启动速度 + 小体积)

Rust 编写,嵌入式 Python 解释器。

目前(2026)更适合有 Rust 经验的开发者,或对启动时间、体积有极端要求的企业项目。

toml 复制代码
# pyoxidizer.bzl 配置示例(简化)
[[python_distribution]]
name = "embedded"
python_exe = "python.exe"

[[exe]]
name = "myapp"
script = "main.py"

优点:启动极快、内存占用低、可做到较小单文件。

缺点:学习曲线陡峭,生态远不如 PyInstaller。

6. Shiv / PEX(.pyz 格式,需目标机器有 Python)

不是真正的 exe,但可以作为补充方案。

bash 复制代码
pip install shiv
shiv -c myapp -o myapp.pyz . 

优点:文件很小,跨平台。

缺点:目标机器必须安装 Python。

快速选择指南(2026 视角)

你想要什么 推荐工具顺序
最简单、最快上手 auto-py-to-exe → PyInstaller
GUI 程序、给普通人用 PyInstaller + --noconsole --onefile
性能敏感、数值/AI 类程序 Nuitka(--onefile)
启动时间敏感 cx_Freeze 或 Nuitka
极致体积 + 启动速度 PyOxidizer 或 Nuitka
内部工具、服务器分发 Shiv / PEX

最推荐的入门组合(2026):

  1. 先用 auto-py-to-exe 快速出第一个 exe
  2. 遇到问题后转 PyInstaller 命令行精细控制
  3. 如果对速度/保护有要求 → 切换 Nuitka

有具体项目类型(GUI、命令行、带 numpy/pandas、带 PyQt/tkinter、pygame 等)可以告诉我,我可以给出更精确的打包参数和常见坑的解决方案~

相关推荐
惊讶的猫1 分钟前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python
cmpxr_5 分钟前
【MicroPython】如何刷新ESP8266的固件
开发语言·micropython
天赐范式14 分钟前
天赐范式第186天:让方差开始自洽——Bulmer效应的闭式验证
python·数字生命·天赐范式·动态运行时·遗传方差·bulmer效应
泡茶喝茶写代码16 分钟前
A股量化数据工程:从 REST 接口到策略信号(第 8 篇):成长能力因子:营收与利润增速
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口·股票数据api数据
搭贝28 分钟前
上厕所的时间搭好一套系统:AI自动生成实测
开发语言·人工智能·低代码·ai·php·搭贝
智感子1 小时前
智能称重·数据上云:从仪表读数到可追溯的计量凭证
开发语言·php
\光辉岁月/1 小时前
7.javase-面向对象
java·开发语言
Είναι η κοπέλα1 小时前
显存计算与模型选择:你的显卡能跑多大的模型
人工智能·pytorch·python·开源·conda
weixin_531094691 小时前
heap_4内存管理
java·开发语言·算法
ROSF68681 小时前
2026 仿石漆乳液供应商:市场布局与行业发展态势梳理
大数据·人工智能·python