python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python打包成Windows可执行程序

把Python应用打包成Windows可执行程序(.exe)的完整指南

作者:迎风斯黄

把 Python 程序打包成 Windows 可执行文件(.exe)或安装包,是把脚本交给非 Python 用户、发布桌面应用或把程序部署到生产环境的常见需求,下面我把主流的几种做法拆开讲以及如何做安装程序与代码签名的建议,需要的朋友可以参考下

把 Python 程序打包成 Windows 可执行文件(.exe)或安装包,是把脚本交给非 Python 用户、发布桌面应用或把程序部署到生产环境的常见需求。下面我把主流的几种做法拆开讲:原理、优缺点、典型命令/示例、常见坑与调试技巧,以及如何做安装程序与代码签名的建议。文中引用官方文档和权威教程作参考(每个工具后面都给了来源链接),便于你继续深入阅读。

一、打包的三类思路(先理解原理)

  1. 捆绑解释器与依赖:把你的 Python 解释器、标准库和第三方包一并打包到一个文件夹或单文件可执行里(如 PyInstaller、cx_Freeze、py2exe)。这类方式最常用,兼容性和第三方库支持好,但体积大。
  2. 将 Python 编译/转成原生二进制:把 Python 代码转换为 C/C++ 并编译成原生可执行(如 Nuitka);通常运行速度更快且更难被反编译,但构建更复杂。
  3. 把 Python 嵌入到自定义运行时/静态打包工具:把应用和解释器集成为单一二进制或特殊格式(如 PyOxidizer、Briefcase),目标是更小或更“原生”的分发体验,但配置门槛更高。

二、主流工具一览

推荐顺序:先尝试 PyInstaller,再按需要考虑其它工具

1) PyInstaller — 最常用、最好入门

# 在虚拟环境里安装
python -m pip install pyinstaller
 
# 生成目录版
pyinstaller --name MyApp main.py
 
# 生成单文件 exe,并指定图标(Windows .ico)
pyinstaller --onefile --windowed --icon=app.ico main.py

调试技巧

2) cx_Freeze — 目录式打包、集成打安装器选项

# setup.py 示例(最简)
from cx_Freeze import setup, Executable
setup(
    name="MyApp",
    version="0.1",
    description="示例",
    executables=[Executable("main.py", base=None, icon="app.ico")],
)
# 构建
python setup.py build
# 或生成 MSI(基于 distutils/bdist_msi)
python setup.py bdist_msi

3) py2exe — 专注 Windows 的传统工具

4) Nuitka — 把 Python 编译成 C,再编译成本地二进制

pip install nuitka
# 使用 MSVC 或 mingw 在 Windows 下编译
nuitka --standalone --onefile --windows-icon-from-ico=app.ico main.py

5) PyOxidizer — 现代化、把 Python embed 成单个可执行

6) Briefcase(BeeWare 生态)— 把 Python 打造成“平台原生应用”

三、如何选择适合你的工具(实践建议)

四、常见打包流程(以 PyInstaller 为例,其他工具类似)

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
python main.py  # 确认正常
pip install pyinstaller
pyinstaller --onefile --windowed --icon=app.ico main.py

五、如何制作 Windows 安装程序(常用工具)

示例(Inno Setup 脚本骨架):

[Setup]
AppName=MyApp
AppVersion=0.1
DefaultDirName={pf}\MyApp
 
[Files]
Source: "dist\MyApp\*"; DestDir: "{app}"; Flags: recursesubdirs
 
[Icons]
Name: "{group}\MyApp"; Filename: "{app}\MyApp.exe"

六、代码签名与防误报

  1. 代码签名证书(EV/Standard):向证书颁发商(例如 DigiCert、Sectigo)购买代码签名证书,在发布前对 exe/installer 进行签名,能显著降低 Windows Defender/SmartScreen 的误报并提升用户信任。
  2. Microsoft SmartScreen:新发布的签名证书仍可能触发 SmartScreen 的“未知发行者”阻拦,随着签名和下载量的增加,声誉会改善。建议申请并使用 EV 证书以加速通过率。
    1. (这是常见流程说明,签名和 SmartScreen 的具体步骤请参考证书厂商与 Microsoft 的官方说明。)

七、打包时常见问题与排查策略

八、示例:从源码到安装包(快速清单)

  1. 在 Windows 上建立并激活虚拟环境,pip install -r requirements.txt,确认 python main.py 正常。
  2. 使用 PyInstaller 打包(先 --onedir,确认无缺失,再 --onefile)。
  3. 在干净的 Windows VM(或 WinPE)上测试可执行文件。
  4. 用 Inno Setup/NSIS 把输出目录打成安装程序,写入卸载项、快捷方式、许可协议。
  5. 使用代码签名证书对 installer/EXE 签名。
  6. 上传到你的网站或分发平台,并在干净环境下再次下载安装测试。

九、收尾建议(实用小贴士)

以上就是把Python应用打包成Windows可执行程序(.exe)的完整指南的详细内容,更多关于Python打包成Windows可执行程序的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文