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

python打包工具Nuitka使用介绍(python nuitka打包exe)

off999 2024-10-09 13:59 26 浏览 0 评论

首先说一下,为什么我选择Nuitka而不是pyinstaller?

Nuitka相对pyinstaller有以下优点:

1. Nuitka能够对 Python 代码进行深度分析,并在此基础上生成优化后的 C 语言代码会针对生成的 C 代码进行更多的优化,这意味着生成的可执行文件可能运行得更快。

2. Nuitka对 Python 代码有更深入的理解,它可以更好地跟踪变量和优化代码,包括去除未使用的代码路径等。这有助于减小最终二进制文件的大小。

3. 增加反编译难度。Nuitka 将 Python 应用程序编译成 C 代码,并进一步编译成可执行文件时,最终生成的是一个类似于任何其他本地编译的应用程序的二进程文件。相比直接反编译 Python 字节码要困难得多。

Nuitka 使用

要使用 Nuitka,首先需要安装 Python 环境,然后可以通过 pip 安装 Nuitka:

pip install nuitka

安装完成,你可以通过命令行来编译你的 Python 脚本。例如,如果你有一个名为 main.py 的脚本,可以使用以下命令来创建一个可执行文件:

nuitka main.py

然后会在当前目录下生成一个与 main.py 同名但扩展名为 .exe(Windows)或可执行文件(Linux/macOS)的文件。

这只是最简单的运行,Nuitka提供了丰富的参数,满足打包需求。

Nuitka 命令行参数

基础参数

  • --standalone:启用独立模式输出。这意味着生成的二进制文件可以在没有预先安装 Python 的环境中运行。这通常会增加生成文件的大小,因为它会包含 Python 解释器和所有必需的库。
  • --onefile:在独立模式的基础上,启用 onefile 模式。这会将所有内容打包成一个单独的可执行文件,而不是一个包含多个文件的文件夹。
  • --show-progress:显示编译的进度信息。
  • --show-memory:显示编译过程中内存的占用情况。

调试与日志

  • --debug:使用 debug 版本的 Python 来编译代码。这有助于调试过程中的问题。
  • --log-level=LEVEL:设置日志级别(如 INFO, WARNING, ERROR 等),以控制日志信息的详细程度。

导入控制

  • --follow-imports:递归到所有导入的模块。在 --standalone 模式下默认开启。
  • --follow-import-to=MODULE/PACKAGE:跟踪到指定的模块或包及其所有导入。
  • --nofollow-import-to=MODULE/PACKAGE:即使使用了也不跟踪指定的模块或包。
  • --include-package=PACKAGE:包含完整的包及其所有子模块。
  • --include-module=MODULE:包含指定的单个模块。

插件与扩展

  • --enable-plugin=PLUGIN:启用指定的插件。Nuitka 支持多种插件来扩展其功能,如 PyQt5 插件等。
  • --plugin-enable=qt-plugins:特定于 Qt 插件的启用选项,用于包含 Qt 相关的动态链接库(DLL)等。

输出与文件控制

  • --output-dir=DIR:指定输出目录,用于存放生成的可执行文件和其他相关文件。
  • --onefile-tempdir-spec=SPEC:在 onefile 模式下,指定解压缩临时目录的规格。
  • --windows-icon-from-ico=ICON:为 Windows 平台上的可执行文件指定图标文件。

编译优化

  • --python-flag=FLAG:传递额外的 Python 标志给编译器,如 -O(优化模式)等。
  • --no-prefer-source-code:对于已编译的扩展模块,如果同时存在源文件和扩展模块,则优先使用扩展模块。

其他

  • --help:显示帮助信息并退出。
  • --version:显示版本信息和提交 bug 报告所需的重要细节。

对于复杂的项目,可能需要根据项目的具体需求来选择合适的参数组合。例如,对于包含大量第三方依赖的项目,可能需要使用 --nofollow-import-to 参数来排除不需要编译的模块,以减少编译时间和生成文件的大小。同时,也可以结合使用 --include-package 和 --include-module 参数来确保关键模块被正确包含在内。

使用举例:

nuitka --standalone --windows-console-mode=disable --include-data-dir=./img=./img --include-data-dir=./data=./data --include-data-dir=./config=./config --windows-icon-from-ico=app.ico main.py

这个命令将 main.py 编译为一个独立的可执行文件,并且包含了一系列的额外数据文件目录,同时设置了应用程序图标,并且禁用了 Windows 控制台窗口的显示。然后会生成一个包含所有必需的资源和依赖项的独立可执行文件,可以在没有 Python 环境的计算机上运行。生成的可执行文件可以在 dist/ 目录下找到(默认输出目录)

相关推荐

大文件传不动?WinRAR/7-Zip 入门到高手,这 5 个技巧让你效率翻倍

“这200张照片怎么传给女儿?微信发不了,邮箱附件又超限……”62岁的张阿姨对着电脑犯愁时,儿子只用了3分钟就把照片压缩成一个文件,还教她:“以后用压缩软件,比打包行李还方便!”职场人更懂这...

电脑解压缩软件推荐——7-Zip:免费、高效、简洁的文件管理神器

在日常工作中,我们经常需要处理压缩文件。无论是下载软件包、接收文件,还是存储大量数据,压缩和解压缩文件都成为了我们日常操作的一部分。而说到压缩解压软件,7-Zip绝对是一个不可忽视的名字。今天,我就来...

设置了加密密码zip文件要如何打开?这几个方法可以试试~

Zip是一种常见的压缩格式文件,文件还可以设置密码保护。那设置了密码的Zip文件要如何打开呢?不清楚的小伙伴一起来看看吧。当我们知道密码想要打开带密码的Zip文件,我们需要用到适用于Zip格式的解压缩...

大文件想要传输成功,怎么把ZIP文件分卷压缩

不知道各位小伙伴有没有这样的烦恼,发送很大很大的压缩包会受到限制,为此,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置?方法一:使用7-Zip免费且强大的文件管理工具7...

高效处理 RAR 分卷压缩包:合并解压操作全攻略

在文件传输和存储过程中,当遇到大文件时,我们常常会使用分卷压缩的方式将其拆分成多个较小的压缩包,方便存储和传输。RAR作为一种常见的压缩格式,分卷压缩包的使用频率也很高。但很多人在拿到RAR分卷...

2个方法教你如何删除ZIP压缩包密码

zip压缩包设置了加密密码,每次解压文件都需要输入密码才能够顺利解压出文件,当压缩包文件不再需要加密的时候,大家肯定想删除压缩包密码,或是忘记了压缩包密码,想要通过删除操作将压缩包密码删除,就能够顺利...

速转!漏洞预警丨压缩软件Winrar目录穿越漏洞

WinRAR是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从Internet上下载的RAR、ZIP及其它类...

文件解压方法和工具分享_文件解压工具下载

压缩文件减少文件大小,降低文件失效的概率,总得来说好处很多。所以很多文件我们下载下来都是压缩软件,很多小伙伴不知道怎么解压,或者不知道什么工具更好,所以今天做了文件解压方法和工具的分享给大家。一、解压...

[python]《Python编程快速上手:让繁琐工作自动化》学习笔记3

1.组织文件笔记(第9章)(代码下载)1.1文件与文件路径通过importshutil调用shutil模块操作目录,shutil模块能够在Python程序中实现文件复制、移动、改名和删除;同时...

Python内置tarfile模块:读写 tar 归档文件详解

一、学习目标1.1学习目标掌握Python内置模块tarfile的核心功能,包括:理解tar归档文件的原理与常见压缩格式(gzip/bz2/lzma)掌握tar文件的读写操作(创建、解压、查看、过滤...

使用python展开tar包_python拓展

类Unix的系统,打包文件经常使用的就是tar包,结合zip工具,可以方便的打包并解压。在python的标准库里面有tarfile库,可以方便实现生成了展开tar包。使用这个库最大的好处,可能就在于不...

银狐钓鱼再升级:白文件脚本化实现GO语言后门持久驻留

近期,火绒威胁情报中心监测到一批相对更为活跃的“银狐”系列变种木马。火绒安全工程师第一时间获取样本并进行分析。分析发现,该样本通过阿里云存储桶下发恶意文件,采用AppDomainManager进行白利...

ZIP文件怎么打开?2个简单方法教你轻松搞定!

在日常工作和生活中,我们经常会遇到各种压缩文件,其中最常见的格式之一就是ZIP。ZIP文件通过压缩数据来减少文件大小,方便我们进行存储和传输。然而,对于初学者来说,如何打开ZIP文件可能会成为一个小小...

Ubuntu—解压多个zip压缩文件.zip .z01 .z02

方法将所有zip文件放在同一目录中:zip_file.z01,zip_file.z02,zip_file.z03,...,zip_file.zip。在Zip3.0版本及以上,使用下列命令:将所有zi...

如何使用7-Zip对文件进行加密压缩

7-Zip是一款开源的文件归档工具,支持多种压缩格式,并提供了对压缩文件进行加密的功能。使用7-Zip可以轻松创建和解压.7z、.zip等格式的压缩文件,并且可以通过设置密码来保护压缩包中的...

取消回复欢迎 发表评论: