【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 等)可以告诉我,我可以给出更精确的打包参数和常见坑的解决方案~

相关推荐
RuoyiOffice9 分钟前
达梦 DM8 + openGauss:RuoYi Office 的 MySQL 数据转换与导入实践
数据库·spring boot·python·sql·信创
用户0332126663679 分钟前
轻松使用 Python 将 RTF 转换为 Word 文档(含批量转换与格式互转)
python
努力努力再努力wz13 分钟前
【Lua入门系列】从动态类型到变量作用域:彻底理解 local、全局变量与跨文件访问
开发语言·junit·lua
程序猿乐锅20 分钟前
面向对象练习:图书借阅系统里的封装、抽象类与多态
开发语言·前端·数据库·后端·python·学习·1024程序员节
xyouyuweizhu25 分钟前
Java IO 流详解:流的作用、流的划分与标准输入输出流
java·python·php
lumengabc34 分钟前
视频制作文字转语音PPT台词生成合成合并视频导出ffmpeg软件python edge-tts
python
沐晓时光37 分钟前
C语言入门,深入理解指针(6)
c语言·开发语言
MSTcheng.38 分钟前
Agent 跑到一半崩了,怎么从上一步接着跑?LangGraph StateGraph 实战:状态持久化、断点恢复与人工审批
python·状态管理·ai agent·langgraph·断点恢复·人工审批
略略略咯咯41 分钟前
33333
开发语言·windows·python
java_prinln41 分钟前
11. 说说 Single-Agent 和 Multi-Agent 的设计方案?
python