首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【教程】Nuitka | Python打包exe新工具

【教程】Nuitka | Python打包exe新工具

原创
作者头像
小锋学长生活大爆炸
发布2025-06-16 21:54:48
发布2025-06-16 21:54:48
1.9K00
代码可运行
举报
文章被收录于专栏:学习之旅学习之旅
运行总次数:0
代码可运行

转载请注明出处:小锋学长生活大爆炸[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。

代码语言:javascript
代码运行次数:0
运行
复制
pip install nuitka

Nuitka打包

Nuitka的功能很强大,因此配置项也比较多,不过一般来说以下应该够用了。

代码语言:javascript
代码运行次数:0
运行
复制
nuitka --windows-console-mode=disable --onefile --enable-plugin=tk-inter --windows-icon-from-ico=app.ico --remove-output --follow-imports --enable-plugin=no-qt --noinclude-pytest-mode=nofollow --output-dir=build/ your.py

参数

含义与作用

nuitka

调用 Nuitka 编译器

your.py

要打包的 Python 源代码文件

--windows-console-mode=disable

告诉 Windows 不要为程序创建控制台窗口(隐藏黑框),用于 GUI 程序

--onefile

将所有内容打包成一个单独的 .exe 文件,便于分发,启动慢

--standalone

会生成一个包含 .exe 和所有依赖文件的文件夹,启动快,占用空间大,适合开发调试、便于查看依赖结构。与onefile二选一。

--enable-plugin=tk-inter

启用 Nuitka 提供的 Tkinter 插件,自动处理 Tkinter 相关依赖和数据文件(如 Tcl/Tk DLL、字体、图标等)。需要但没加时候会给warning。有:tk-inter|PySide6|PySide2|PyQt6|PyQt5

--remove-output

删除输出文件夹中的 .build文件夹

--windows-icon-from-ico

添加图标

--follow-imports

自动递归跟踪并包含所有你代码中导入的模块

--jobs=4

限制并行编译线程数,不然跑满CPU卡死电脑

--enable-plugin=no-qt

避免误加载 Qt 插件,减少打包复杂度和体积。确实用了Qt就不要加

--include-data-files=src/*.txt=.

手动包含非代码资源文件,可选

--output-dir=build/

指定输出目录

--noinclude-pytest-mode=nofollow

避免自动包含测试依赖,从而精简依赖体积

--show-progress

显示构建进度,用于调试或观察编译流程

对于简单的代码,实测效果没啥差别。对于复杂代码打包,可能会遇到问题,需要慢慢调。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 打包工具对比
    • PyInstaller
    • cx_Freeze
    • PyOxidizer
    • Nuitka
    • py2exe
  • Nuitka安装
  • Nuitka打包
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档