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

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

排名方法/工具易用性生成文件大小启动速度运行速度反编译难度典型场景推荐指数 (★5)
1PyInstaller★★★★★大(onefile 常 50–300MB)慢(几秒~几十秒)普通绝大多数 GUI、小工具、初次尝试★★★★★
2auto-py-to-exe★★★★★同 PyInstaller同上普通零基础用户、GUI 操作打包★★★★☆
3Nuitka★★★★☆中~小明显更快(1.5–4×)中~高性能敏感、数值计算、想保护代码★★★★☆
4cx_Freeze★★★★较快普通低~中追求启动快、跨平台、自定义 setup.py★★★☆☆
5PyOxidizer★★☆☆☆小~中非常快普通~快中~高极致体积/启动速度、Rust 爱好者★★☆☆☆
6Shiv / PEX★★★小(.pyz)普通普通内部工具分发、需要 Python 环境★★☆☆☆

1. 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 # 调试时先用文件夹模式找问题 pyinstaller -D your_script.py 

常见问题解决

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

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

本质是 PyInstaller 的 GUI 封装。

pip install auto-py-to-exe auto-py-to-exe 

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

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

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

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

# 安装(需要 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(启动快、体积相对友好)

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 经验的开发者,或对启动时间、体积有极端要求的企业项目。

# pyoxidizer.bzl 配置示例(简化) [[python_distribution]] name = "embedded" python_exe = "python.exe" [[exe]] name = "myapp" script = "main.py" 

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

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

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

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

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

Read more

python,numpy,pandas和matplotlib版本对应关系

下面是Python、NumPy、Pandas、Matplotlib的版本对应关系表(基于官方兼容性文档和实践验证,包含常用Python版本),同时补充了推荐的稳定组合: 常用Python版本对应的库兼容版本 Python版本NumPy兼容版本Pandas兼容版本Matplotlib兼容版本推荐稳定组合示例3.8.x1.19.x ~ 1.21.x1.1.x ~ 1.3.x3.3.x ~ 3.5.xPython3.8 + NumPy1.21.6 + Pandas1.3.5 + Matplotlib3.5.33.9.x1.19.x ~ 1.24.x1.1.x ~ 1.5.x3.3.x

By Ne0inhk
快速上手:在 Python 环境中安装与配置 Gurobi

快速上手:在 Python 环境中安装与配置 Gurobi

快速上手:在 Python 环境中安装与配置 Gurobi 一、Gurobi简介 Gurobi 是由美国 Gurobi Optimization 公司开发的一款高性能商业数学优化求解器,广泛应用于学术研究与工业领域。它能够高效求解以下类型的优化问题: * 线性规划(LP) * 整数规划(IP) * 混合整数规划(MIP) * 二次规划(QP) * 二次约束规划(QCP) * 非线性规划(部分支持,如含对数、指数、三角函数、分段函数等) 主要特点: * 求解速度快、精度高:在多项第三方评测中性能领先,曾于2010年超越 CPLEX 成为行业标杆。 * 多语言支持:提供 Python、C/C++、Java、.NET、MATLAB、R 等接口,其中 Python 接口(

By Ne0inhk
博主亲测!Python+IPIDEA 自动化高效采集音乐数据

博主亲测!Python+IPIDEA 自动化高效采集音乐数据

文章目录 * 一、前言 * 二、全面认识 * 2.1 初步认识 * 2.2 实际使用感受 * 三、手把手教你:从0到1的完整流程 * 四、实战体验 * 五、超多场景预设,助力解决难题 * 六、用后感受 一、前言 最近想做个某云音乐每日推荐歌单存档小工具 —— 每天自动获取推荐歌曲,存成 Excel 方便回顾。结果刚跑了 3 天,代码就报网络异常,手动访问发现被平台限制了:刷新 10 次有 8 次跳验证,根本拿不到数据。 我一开始没当回事,试了两种办法:先是用免费代理池,结果要么失效快,要么访问速度比蜗牛还慢,歌单同步成功率不到 30%;后来手动换手机热点,每天要切 3 次

By Ne0inhk

新卷-敌情监控-(Java&Python&JS&C++&C)

新卷-敌情监控-(Java&Python&JS&C++&C) 题目描述 H国最近在和M国打仗,H国间谍头子Peter负责监视敌国M的兵力部署情况。M国沿边境线布置了N个营地,Peter的任务就是监视这些营地的兵力部署情况。中央情报局要研究敌情,所以Peter要汇报一段兵营中哪个连续的K个营地驻兵最少之和是多少,可以作为攻击的突破点,例如:“Peter,快汇报第2个营地到第10个营地中H连续的3座兵营人数之和最少”;而且每个营地的人数在不断变化。请你帮Peter设计一个程序,快速计算汇到的结果 输入描述 第一行3个正整数:N K L N(N<=50000),表示敌人营地兵营的数量,每个营地编号为1,2,3...N.K表示连续的兵营数,L表示后续要问的命令数量;接下来有N个正整数,第i个正整数ai代表第i个营地里开始时有ai个人(1<=ai<=50000) 接下来有行有L条命令。命令有3种形式: (1)

By Ne0inhk