使用PyInstaller、cx_Freeze、GitHub Actions、Nuitka等工具可将Python项目打包为Windows可执行exe文件,支持图标、版本信息及资源嵌入,实现跨平台分发与自动化构建。

如果您使用 GitHub 托管 Python 或其他支持编译/打包的项目源码,但需要将代码转化为 Windows 可直接运行的 .exe 文件,则需在本地或 CI 环境中执行打包操作。以下是生成 exe 的具体流程:
一、使用 PyInstaller 打包 Python 项目
PyInstaller 是最常用的 Python 打包工具,能将脚本及其依赖封装为独立可执行文件,无需目标机器安装 Python 解释器。
1、在项目根目录下打开命令行终端,确保已安装 Python 和 pip。
2、执行 pip install pyinstaller 安装工具。
3、运行 pyinstaller --onefile --windowed main.py(将 main.py 替换为您的主入口文件名)。
4、生成的 exe 文件位于 dist/ 目录下,可直接双击运行。
二、使用 cx_Freeze 构建多平台兼容包
cx_Freeze 支持更细粒度的依赖控制,适合含 C 扩展或复杂资源路径的项目,生成结构清晰的发布目录。
1、执行 pip install cx_Freeze 安装工具。
2、在项目根目录创建 setup.py,内容包含 executables = [Executable("main.py")] 等配置。
3、运行 python setup.py build 启动构建过程。
4、完成后的可执行文件及依赖库位于 build/ 目录中,需整体分发。
三、通过 GitHub Actions 自动化打包
利用 GitHub Actions 在每次推送或打标签时自动触发打包任务,避免手动操作,确保版本一致性。
1、在项目根目录创建 .github/workflows/build-exe.yml 文件。
2、在 yml 中指定 runs-on: windows-latest,并添加 python 搭建步骤。
3、使用 pyinstaller --onefile main.py 命令执行打包。
4、通过 actions/upload-artifact 将 dist/ 下的 exe 文件作为构建产物保存。
四、使用Nuitka 编译为原生可执行文件
Nuitka 将 Python 代码翻译为 C++ 并调用编译器生成真正原生的二进制文件,运行效率更高,反编译难度更大。
1、执行 pip install nuitka 安装工具。
2、运行 nuitka --onefile --windows-disable-console main.py(禁用控制台窗口适用于 GUI 程序)。
3、编译过程可能耗时较长,完成后可在当前目录找到 main.exe。
4、若提示缺少 MSVC 编译器,需安装 Microsoft C++ Build Tools 或 Visual Studio Community。
五、处理图标、版本信息与依赖资源
生成的 exe 默认无图标且无版本元数据,需额外参数注入以提升专业性与用户识别度。
1、准备 icon.ico 文件,添加 --icon=icon.ico 到 PyInstaller 或 Nuitka 命令中。
2、创建 version_info.txt 文件,按 VSVersionInfo 格式填写公司名、产品名、版本号等字段。
3、使用 --version-file=version_info.txt 参数让 PyInstaller 注入该信息。
4、对图片、配置文件等非代码资源,用 --add-data "assets;assets" 显式声明路径映射关系。










