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

相关推荐
jerryinwuhan3 小时前
基于各城市站点流量的复合功能比较
开发语言·php
曦月逸霜3 小时前
啥是RAG 它能干什么?
人工智能·python·机器学习
2301_769340674 小时前
如何在 Vuetify 中可靠捕获 Chip 关闭事件(包括键盘触发).txt
jvm·数据库·python
迈巴赫车主4 小时前
Java基础:list、set、map一遍过
java·开发语言
南 阳5 小时前
Python从入门到精通day66
开发语言·python
m0_596749096 小时前
JavaScript中手动实现一个new操作符的底层逻辑
jvm·数据库·python
DTAS尺寸公差分析软件6 小时前
DTAS3D v13.0 三维尺寸公差分析软件可申请试用
python·尺寸公差分析·三维公差分析·公差仿真软件·尺寸链计算
DTAS尺寸公差分析软件6 小时前
DTAS 3D公差分析软件最新版本介绍
python·3d·尺寸公差分析·尺寸链计算·尺寸工程·尺寸链校核软件·公差仿真分析
PieroPc6 小时前
CAMWATCH — 局域网摄像头监控系统 Fastapi + html
前端·python·html·fastapi·监控
feasibility.6 小时前
反爬十层妖塔:现代爬虫攻防的立体战争
爬虫·python·科技·scrapy·rust·go·硬件