【教程】Nuitka | Python打包exe新工具
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn]
如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~
目录
打包工具对比
PyInstaller
cx_Freeze
PyOxidizer
Nuitka
py2exe
Nuitka安装
Nuitka打包
打包工具对比
PyInstaller
-
特点:最常用的打包工具,支持 Windows、Linux 和 macOS。
-
优点:
-
操作简单,适合快速打包。
-
支持将应用打包为单个
.exe
文件(--onefile
参数)。 -
自动分析依赖项,减少手动配置。
-
-
缺点:
-
生成的可执行文件体积较大,尤其是在包含大型库(如 Pandas、PyTorch)时。
-
启动速度可能较慢,因为需要在运行时解压资源。
-
-
适用场景:快速部署、GUI 应用、命令行工具等。
cx_Freeze
-
特点:将 Python 脚本“冻结”为可执行文件,支持 Windows、Linux 和 macOS。
-
优点:
-
生成的可执行文件体积适中。
-
适合打包 GUI 应用。
-
-
缺点:
-
配置相对复杂,需要编写
setup.py
文件。 -
社区活跃度较低,更新频率不高。
-
-
适用场景:需要较小体积可执行文件的跨平台应用。
PyOxidizer
-
特点:使用 Rust 编写的新型打包工具,支持生成单个
.exe
文件。 -
优点:
-
生成的可执行文件启动速度快。
-
支持多平台打包。
-
-
缺点:
-
配置复杂,学习曲线较陡。
-
社区资源相对较少。
-
-
适用场景:对启动速度有较高要求的高级用户。
Nuitka
-
特点:将 Python 代码编译为 C 语言,再生成可执行文件,提升性能并增强代码保护。
-
优点:
-
生成的可执行文件运行速度更快。
-
源代码难以反编译,增强安全性。
-
支持将所有依赖打包为独立目录或单个文件。
-
-
缺点:
-
需要安装 C 编译器(如 gcc、MSVC)。
-
首次编译时间较长。
-
-
适用场景:对性能和代码保护有较高要求的应用。
py2exe
-
特点:专为 Windows 设计的打包工具,历史悠久。
-
优点:
-
操作简单,适合小型项目。
-
-
缺点:
-
仅支持 Windows。
-
不支持跨平台打包。
-
-
适用场景:仅面向 Windows 用户的小型应用。
Nuitka安装
GitHub - Nuitka/Nuitka
pyinstaller使用最方便,但exe实在太大了,一个tkinter窗口程序打包为200MB,因此转向Nuitka。
pip install nuitka
Nuitka打包
Nuitka的功能很强大,因此配置项也比较多,不过一般来说以下应该够用了。
nuitka --windows-disable-console --onefile --enable-plugin=tk-inter --windows-icon=app.ico --remove-output --follow-imports your.py
参数 | 含义与作用 |
---|---|
nuitka | 调用 Nuitka 编译器 |
--windows-disable-console | 告诉 Windows 不要为程序创建控制台窗口(隐藏黑框),用于 GUI 程序 |
--onefile | 将所有内容打包成一个单独的 .exe 文件,便于分发,启动慢 |
--standalone | 会生成一个包含 .exe 和所有依赖文件的文件夹,启动快 占用空间大,适合开发调试、便于查看依赖结构。与--onefile二选一。 |
--enable-plugin=tk-inter | 启用 Nuitka 提供的 Tkinter 插件,自动处理 Tkinter 相关依赖和数据文件(如 Tcl/Tk DLL、字体、图标等)。需要但没加时候会给warning。 |
your.py | 要打包的 Python 源代码文件 |
--remove-output | 删除输出文件夹中的 .build文件夹 |
--windows-icon=app.ico | 添加图标 |
--follow-imports | 自动递归跟踪并包含所有你代码中导入的模块 |
对于简单的代码,实测效果没啥差别。对于复杂代码打包,可能会遇到问题,需要慢慢调。