百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

[Python]一文掌握Nuitka 参数语法详细介绍与示例

off999 2024-10-26 12:03 38 浏览 0 评论

Nuitka 是一个非常强大的工具,它可以通过丰富的命令行参数自定义 Python 项目的编译过程。下面将详细介绍 Nuitka 常用的参数语法,并结合实际示例展示其使用。




1.基本参数


--standalone / --onefile


  • 用途:创建一个可以独立运行的可执行文件,无需 Python 环境。
  • --standalone:生成一个包含所有依赖的文件夹,里面有可执行文件和依赖。
  • --onefile:将所有文件打包为一个单独的 .exe 文件,适合分发时使用。


示例


  • 生成一个单独的 .exe 文件:
nuitka --onefile script.py
  • 生成包含可执行文件和依赖库的文件夹:
nuitka --standalone script.py




2.优化参数


--optimize=N


  • 用途:优化生成的代码,N 是优化级别,可以是 0、1 或 2。数字越大,优化越多,但编译时间也会增加。


示例


  • 启用最大优化:
nuitka --standalone --optimize=2 script.py


--lto


  • 用途:启用链接时优化(Link Time Optimization),进一步减少生成文件的大小并提升性能。


示例


  • 启用 LTO 以获得更小的文件体积和性能优化:
nuitka --onefile --lto=yes script.py

以下是 --lto 选项的可能值:

  • --lto=no:禁用 LTO。这是默认值。
  • --lto=yes:启用 LTO。这将进一步优化您的代码,但也会增加编译时间。
  • --lto=thin:启用薄 LTO。这将比 --lto=no 优化您的代码更多,但不会像 --lto=yes 那样增加编译时间。


3.插件参数


Nuitka 提供了多个插件,用于扩展对特定库或特性的支持。例如 GUI 库、打包中的防膨胀(anti-bloat)插件等。


--enable-plugin=<plugin_name>


  • 用途:启用指定的插件,支持多个插件,例如 tkinter、pyside、pyqt 等。


常见插件


  • tk-inter:支持 Tkinter GUI 程序。
  • numpy:支持对 numpy 的优化打包。
  • anti-bloat:减少无用模块的导入。
  • no-qt:禁用 Qt 插件,避免膨胀。


示例


  • 启用 tkinter 插件来支持 Tkinter GUI:
nuitka --standalone --enable-plugin=tk-inter script.py
  • 启用多个插件(tkinter 和 numpy):
nuitka --standalone --enable-plugin=tk-inter --enable-plugin=numpy script.py




4.控制输出


--output-dir=<dir>


  • 用途:指定编译输出目录。


示例


  • 将编译结果输出到 dist/ 目录:
nuitka --standalone --output-dir=dist script.py


--remove-output


  • 用途:在编译完成后删除中间生成的 .c 文件和其他临时文件,节省磁盘空间。


示例


  • 删除临时文件以节省磁盘空间:
nuitka --standalone --remove-output script.py




5.处理依赖和导入


--nofollow-imports


  • 用途:忽略所有模块的导入,不跟踪依赖。这可以减少生成文件的体积,但你需要确保所有必要的模块都被打包。


示例


  • 忽略所有导入,适用于无需动态导入的简单项目:
nuitka --standalone --nofollow-imports script.py


--include-package=<package_name> / --include-module=<module_name>


  • 用途:显式包含某个模块或包,确保其被打包。如果某些模块没有被自动检测到,可以用此命令手动指定。


示例


  • 手动包含 my_package 包:
nuitka --standalone --include-package=my_package script.py
  • 手动包含 my_module 模块:
nuitka --standalone --include-module=my_module script.py


--include-data-dir=<source>=<destination>


  • 用途:将指定的文件夹打包到输出的可执行文件中,适用于需要将静态资源(例如配置文件、数据文件)包含到最终程序中的场景。


示例


  • 将当前目录下的 data/ 文件夹包含到可执行文件中:
nuitka --standalone --include-data-dir=./data=./data script.py




6.处理特定库的依赖


--noinclude-unittest


  • 用途:排除 unittest 模块,减少不必要的测试框架的导入,可以减小文件体积。


示例


  • 排除 unittest 模块:
nuitka --standalone --noinclude-unittest script.py


--nofollow=<module_name>


  • 用途:忽略指定模块的导入,不跟踪它的依赖。


示例


  • 不跟踪 logging 模块的导入:
nuitka --standalone --nofollow=logging script.py




7.控制二进制生成的配置


--python-flag=<flag>


  • 用途:控制 Python 解释器的一些行为,例如启用优化模式或禁用断言。


常见标志


  • no_warnings:禁用 Python 警告。
  • no_asserts:禁用断言语句,适合生产环境以提升性能。


示例


  • 禁用所有 Python 警告:
nuitka --standalone --python-flag=no_warnings script.py
  • 禁用断言,适合优化生产环境的代码:
nuitka --standalone --python-flag=no_asserts script.py




8.编译器设置


--clang / --mingw64


  • 用途:指定使用的编译器。Nuitka 默认使用本机的编译器,但你可以指定使用 Clang 或 MinGW64 等不同的编译器。


示例


  • 使用 clang 编译:
nuitka --standalone --clang script.py
  • 使用 mingw64 编译(适用于 Windows):
nuitka --standalone --mingw64 script.py




9.启用商业级特性


--commercial


  • 用途:启用 Nuitka 的商业级功能,包括更高级别的优化和闭源项目支持。这个选项仅对 Nuitka 的商业版本有效。


示例


  • 启用商业级特性:
nuitka --standalone --commercial script.py




10.调试和日志


--debug


  • 用途:启用调试模式,生成包含调试信息的可执行文件。适合在开发过程中跟踪和排查问题。


示例


  • 生成带有调试信息的文件:
nuitka --standalone --debug script.py


--show-scons


  • 用途:显示内部 SCons 构建系统的输出,用于了解编译过程中的详细信息。


示例


  • 显示 SCons 的详细输出:
nuitka --standalone --show-scons script.py




总结


Nuitka 提供了非常灵活和强大的参数配置,适合不同的打包需求。以下是一些常见的组合示例:


  • 最基本的打包(单文件可执行程序)
nuitka --onefile script.py
  • 使用 tkinter 插件生成 GUI 程序
nuitka --onefile --enable-plugin=tk-inter script.py
  • 启用优化和 LTO 以减少体积和提升性能
nuitka --onefile --optimize=2 --lto script.py


通过灵活使用这些参数,你可以根据项目的需要调整打包策略,获得性能和体积的最佳平衡。

相关推荐

戴尔官网保修查询入口(戴尔售后保质期查询)

可以按照以下步骤查询戴尔笔记本电脑的保修期:1.打开戴尔官网:https://www.戴尔.com/zh-cn/售后服务/保修政策.html2.点击页面上方的“服务与支持”按钮,进入戴尔的服务支持...

手机号邮箱登录入口(手机号邮箱官网)

手机163邮箱登录入口如下:163邮箱官网入口:https://smart.mail.163.com/login.htm点击进入登录或者注册邮箱即可。手机浏览器访问进入官网http://www.123...

sd卡(sd卡无法读取怎么修复)

  SD卡是大卡,相机用的;普通的手机内存卡,是小卡,正规的名称是macrosd卡,也就是微型SD卡。可以通过卡套转为普通的SD卡的大小。  其实就是大小不同。但手机上的内存卡,人们经常也俗称为SD...

路由器连接图(网络路由器连接图)
  • 路由器连接图(网络路由器连接图)
  • 路由器连接图(网络路由器连接图)
  • 路由器连接图(网络路由器连接图)
  • 路由器连接图(网络路由器连接图)
windows7蓝牙功能在哪里打开

点击搜索框在windows7系统主界面点击开始菜单,点击打开搜索框。输入命令输入services.msc后回车,在列表中找到并右击BluetoothSupportS...点击属性选择进入属性菜单,...

2010激活密钥(microsoft2010激活密钥)
2010激活密钥(microsoft2010激活密钥)

步骤/方式1officeprofessionalplus2010:(office专业版)6QFdx-pYH2G-ppYFd-C7RJM-BBKQ8Bdd3G-xM7FB-Bd2HM-YK63V-VQFdKVYBBJ-TRJpB-QFQ...

2025-11-19 04:03 off999

联想官方刷新bios工具(联想电脑刷新bios)

刷新BIOS需要使用联想的官方网站或授权维修中心来进行操作。以下是一些基本步骤:1.访问联想的官方网站,找到BIOS更新程序并下载。在下载过程中,请确保选择与您计算机型号匹配的版本。2.将下载的B...

苹果ios14系统下载(苹果ios14.1下载)
苹果ios14系统下载(苹果ios14.1下载)

1方法一步骤/方式一打开Appstore。步骤/方式二在搜索栏点击搜索框。步骤/方式三搜索并点击需要下载的软件。步骤/方式四点击获取。步骤/方式五最后验证ID密码即可。1.在应用商店搜索你要下载的应用名称。2.点击下载按钮,如果要求登...

2025-11-19 03:03 off999

office2010怎么免费永久激活密钥

用这个试试,一个KMS激活工具可以激活2010到2019的Office自家的目前用的就是这个microsoft6477.moe/1716.html直接使用这个Microsoftoffice2010...

类似爱加速的国内ip(类似爱加速的app)
类似爱加速的国内ip(类似爱加速的app)

推荐“V8盒子”。这一款免费无广告的模拟器,不同于其它软件盒子,而是类似于X8沙箱,满足游戏多开,画中画,悬浮球操作,熄屏后台运行等多功能的沙箱盒子.支持一键root,一键安装xposed框架,能在安卓/苹果手机上运行多个安卓/ios虚拟系...

2025-11-19 02:03 off999

阿里旺旺手机客户端(阿里旺旺手机app)

手机淘宝的旺旺在打开商品后,会看到左下角有个旺旺的图标,点击就可以联系了。  阿里旺旺是将原先的淘宝旺旺与阿里巴巴贸易通整合在一起的一个新品牌。它是淘宝和阿里巴巴为商人量身定做的免费网上商务沟通软件,...

最纯净的pe装机工具(pe工具哪个纯净)

U盘装系统步骤:1.制作U盘启动盘。这里推荐大白菜U盘启动盘制作工具,在网上一搜便是。2.U盘启动盘做好了,我们还需要一个GHOST文件,可以从网上下载一个ghost版的XP/WIN7/WIN8系统,...

装一个erp系统多少钱(wms仓库管理软件)

现在主流有客户端ERP和云端ERP两种客户端通常一次买断,价格在万元左右,但是还有隐性费用,你需要支付服务器、数据管理员,此外如果系统需要更新维护,你还需要支付另外一笔不菲的费用。云端ERP:优势...

cad2014序列号和密钥永久(autocad2014序列号和密钥)

1在cad2014中修改标注样式后,需要将其保存2单击“样式管理器”按钮,在弹出的窗口中选择修改后的标注样式,然后单击“设置为当前”按钮,再单击“保存当前样式”按钮,将其保存为新的样式名称3为了...

qq修改密保手机号(qq修改密保手机号是什么意思)

QQ更改绑定的手机号码操作步骤如下:1、打开手机主界面,找到“QQ”软件点击打开。2、输入正确的QQ账户和密码登录到qq主界面。3、点击左上角的头像“图片”,进入到个人中心界面。4、进入到个人中心界面...

取消回复欢迎 发表评论: