当前位置: 首页 > ops >正文

【教程】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自动递归跟踪并包含所有你代码中导入的模块

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

http://www.xdnf.cn/news/7710.html

相关文章:

  • Python 包管理工具核心指令uv sync解析
  • Brooks Polycold快速循环水蒸气冷冻泵客户使用手含电路图,适用于真空室应用
  • 什么是车载座舱产品的SRRC认证?
  • function calling简介
  • Vue组件开发深度指南:构建可复用与可维护的UI
  • python的加速方法
  • 【固废处理核心痛点】RS485转Profinet协议转换,如何提升设备监控效率?​​
  • Python训练营打卡31
  • 2025华为OD机试真题+全流程解析+备考攻略+经验分享+Java/python/JavaScript/C++/C/GO六种语言最佳实现
  • git 撤销最近的几次push
  • Linux系统编程-DAY01
  • 动态DNS管理:【etcd+CoreDNS】 vs【BIND9】便捷性对比
  • Profinet转RS485网关赋能热敏CTP冲版机:高精度数据交互的核心解码方案​​
  • C++静态函数错误解析与修复指南练习
  • 编程技能:字符串函数08,strcmp
  • 刚刚!2025年5月WOS期刊目录已更新,新增多本期刊,剔除1本SCI期刊,慎投!
  • 软件测试期末复习
  • 深入解析OrientDB:多模型数据库的技术优势与实际应用
  • 如何从不同位置将联系人导入 iPhone(完整指南)
  • STM32定时器简单采集编码器脉冲
  • 【ubuntu服务器显卡老是坏掉】
  • BGP边界网关协议
  • 9、AI测试辅助-代码Bug分析提示词优化
  • 静态代理有哪些优势
  • 深入理解指针(一)
  • HarmonyOS实战:3秒实现一个自定义轮播图
  • 纯前端实现 导入/导出/模板下载功能
  • 变频器如何通过Profibus DP主站转Modbus RTU/TCP接入到上位机
  • DeepSeek的走红,会不会带动芯片市场新一轮增长?
  • Java中的ImageIo支持webp解析