分享

《Nuitka打包教程》所有命令...

 大傻子的文渊阁 2023-01-05 发布于浙江

其他Nuitka打包技巧见《Python程序打包指南》

(venv) PS C:\Users\ThinkPad> nuitka --help

Usage: __main__.py [--module] [--run] [options] main_module.py

1、常用选项:

  • --version : 显示版本并退出

  • -h, --help : 显示帮助信息并退出

  • --module: 创建扩展模块可执行文件而不是程序。默认关闭。

  • --standalone : 为输出启用独立模式。 这允许您将创建的二进制文件传输到其他机器,而无需使用现有的 Python 安装。 这也意味着它会变大。 它暗含了这些选项:“–follow-imports”。 您可能还想使用“–python-flag=no_site”来避免使用“site.py”模块,它可以节省大量的代码依赖。 默认为关闭。

  • --onefile : 在独立模式之上,启用 onefile 模式。 这意味着不是文件夹,而是创建和使用压缩的可执行文件。 默认为关闭。

  • --python-arch=PYTHON_ARCH : 要使用的 Python 架构。 “x86”或“x86_64”之一。 默认为您运行 Nuitka 所使用的(当前为“x86_64”)。

  • --python-debug : 是否使用调试版本。 默认使用你用来运行 Nuitka 的东西,很可能是非调试版本。

  • --python-flag=FLAG : 要使用的 Python 标志。 默认值是您用来运行 Nuitka 的,这会强制执行特定模式。 这些选项也存在于标准 Python 可执行文件中。目前支持:“-S”(别名“no_site”), “static_hashes”(不使用散列随机化)、“no_warnings”(不给出 Python 运行时警告)、“-O”(别名“no_asserts”)、“no_docstrings”(不使用文档字符串)和“-m”。 默认为空。

  • --python-for-scons=PATH : 如果使用 Python3.3 或 Python3.4,请提供用于 Scons 的 Python 二进制文件的路径。 否则 Nuitka 可以使用你运行 Nuitka 的东西,或者在 PATH 中找到的“scons”二进制文件,或者从
    Windows 注册表。

  • --warn-implicit-exceptions : 为编译时检测到的隐式异常启用警告。

  • --warn-unusual-code : 为编译时检测到的异常代码启用警告。

  • --assume-yes-for-downloads : 如有必要,允许 Nuitka 下载外部代码,例如 Windows 上的依赖 walker、ccache 甚至 gcc。 要禁用,请重定向来自 nul 设备的输入,例如 “</dev/null”或“<NUL:”。 默认为提示,用户确认后下载。

2、控制结果中包含的模块和包:

  • --include-package=PACKAGE : 包括一个完整的包裹。 作为 Python 命名空间给出,例如“some_package.sub_package”然后 Nuitka 将找到它并将其包含在它创建的二进制或扩展模块中该磁盘位置下方的所有模块,并使其可用于代码导入。 为了避免不需要的子包,例如 测试你可以例如 执行此操作“–nofollow-import-to=*.tests”。默认为空。

  • --include-module=MODULE : 包括一个模块。 作为 Python 命名空间给出,例如 “some_package.some_module”,然后 Nuitka 将找到它并将其包含在它创建的二进制或扩展模块中,并使其可用于代码导入。 默认为空。

  • --include-plugin-directory=MODULE/PACKAGE : 包含该目录的内容,无论它是否被给定的主程序以可见的形式使用。覆盖所有其他包含选项。 可以多次给予。 默认为空。

  • --include-plugin-files=PATTERN : 包含到与 PATTERN 匹配的文件中。 覆盖所有其他跟随选项。 可以多次给出。默认为空。

  • --prefer-source-code : 对于既有源文件又有扩展模块的已编译扩展模块,通常使用扩展模块,但最好从可用源代码编译模块以获得最佳性能。 如果不需要,可以使用“–no-prefer-source-code”来禁用有关它的警告。默认关闭。

3、将以下内容控制到导入的模块中:

  • --follow-stdlib : 还可以从标准库中引入导入的模块。 这会大大增加编译时间。 默认为关闭。

  • --nofollow-imports : 当使用“–nofollow-imports”时,根本不要进入任何导入的模块,覆盖所有其他包含选项。 默认为关闭。

  • --follow-imports : 当使用“–follow-imports”时,尝试下降到所有导入的模块。 默认为关闭。

  • --follow-import-to=MODULE/PACKAGE : 如果使用,请导入该模块,或者如果是包,则导入整个包。可以多次给予。默认为空。

  • --nofollow-import-to=MODULE/PACKAGE : 即使使用了该模块名称,也不要导入该模块名称,或者如果是包名称,则在任何情况下都不要导入整个包,覆盖所有其他选项。 可以多次给予。 默认为空。

4、Data files for standalone/onefile模式:

  • --include-package-data=PACKAGE : 包含给定包名的数据文件。 可以使用模式。 默认情况下,Nuitka 不会,除非硬编码并且对包的操作至关重要。 这将包括发行版中的所有非 DLL、非扩展模块。 默认为空。

  • --include-data-file=DESC : 在分发中按文件名包含数据文件。有许多允许的形式。 使用 '–include-data-file=/path/to/file/.txt=folder_name/some.txt’ 它将复制一个文件并抱怨它是否是多个。 使用 --include-data-file=/path/to/files/.txt=folder_name/’ 它会将所有匹配的文件放入该文件夹中。 对于递归复制,有一个具有 3 个值的表单,即 '–include-data-file=/path/to/scan=folder_name=**/*.txt’ 将保留目录结构。 默认为空。

  • --include-data-dir=DIRECTORY : 在分发中包含来自完整目录的数据文件。 这是递归的。 如果您想要非递归包含,请使用模式检查“–include-data-file”。 一个示例是 '–include-data-dir=/path/somedir=data/somedir’ 用于整个目录的纯副本。 所有文件都被复制,如果要排除文件,则需要事先将其删除。默认为空。

5、编译后立即执行:

  • --run : 立即执行创建的二进制文件(或导入已编译的模块)。默认为关闭。

  • --debugger, --gdb : 在调试器中执行,例如 “gdb”或“lldb”自动获取堆栈跟踪。 默认为关闭。

  • --execute-with-pythonpath : 立即执行创建的二进制文件 (–execute) 时,不要重置 PYTHONPATH。 成功包含所有模块后,您应该不再需要 PYTHONPATH 了。

6、Dump options for internal tree:

  • --xml: 将优化的最终结果转储为 XML,然后退出。

7、代码生成选项:

  • --full-compat : 强制与 CPython 绝对兼容。 甚至不允许与 CPython 行为有细微的偏差,例如 没有更好的回溯或异常消息,它们并不是真正不兼容,但只是不同。 这仅用于测试,不应用于正常使用。

  • --file-reference-choice=MODE : 选择“file”的值。 使用“runtime”(独立二进制模式和模块模式默认),创建的二进制和模块,使用自己的位置来扣除“file”的值。 包含的软件包假装在该位置下方的目录中。 这允许您在部署中包含数据文件。 如果您只是寻求加速,最好使用“原始”值,将使用源文件位置。 对于“frozen”,使用符号“”。 出于兼容性原因,“file”值将始终具有“.py”后缀,与它的实际含义无关。

8、输出选项:

  • -o FILENAME : 指定应如何命名可执行文件。 对于扩展模块没有选择,对于独立模式也没有选择,使用它会出错。 这可能包括需要存在的路径信息。 在此平台上默认为“<program_name>”.exe

  • --output-dir=DIRECTORY : 指定中间和最终输出文件的放置位置。 DIRECTORY 将填充 C 文件、目标文件等。默认为当前目录。

  • --remove-output : 生成模块或 exe 文件后删除构建目录。 默认为关闭。

  • --no-pyi-file : 不要为 Nuitka 创建的扩展模块创建“.pyi”文件。 这用于检测隐式导入。 默认为关闭。

9、调试功能:

  • --debug : 执行所有可能的自检以发现 Nuitka 中的错误,不要用于生产。 默认为关闭。

  • --unstripped : 将调试信息保存在生成的目标文件中,以便更好地与调试器交互。 默认为关闭。

  • --profile : 启用基于 vmprof 的时间分析。 目前不工作。 默认为关闭。

  • --internal-graph : 创建优化过程内部图,不要用于整个程序,而仅用于小测试用例。默认为关闭。

  • --trace-execution : 创建优化过程内部图,不要用于整个程序,而仅用于小测试用例。默认为关闭。

  • --recompile-c-only : 这不是增量编译,仅用于Nuitka开发。 获取现有文件并再次将它们编译为 C。允许编译已编辑的C文件以快速调试生成的更改来源,例如 查看代码是否通过,值输出等,默认为关闭。取决于编译 Python 源代码以确定它应该查看哪些文件。

  • --generate-c-only : 仅生成 C 源代码,不要将其编译为二进制或模块。 这是用于不浪费 CPU 的调试和代码覆盖分析。 默认为关闭。 不要认为你可以直接使用它。

  • --experimental=FLAG : 使用声明为“实验性”的功能。 如果代码中不存在实验性功能,则可能无效。 每个实验功能使用秘密标签(检查源)。

  • --low-memory : 通过分叉更少的 C 编译作业和使用使用更少内存的选项来尝试使用更少的内存。 用于嵌入式机器。 如果出现内存不足问题,请使用此选项。 默认为关闭。

  • --disable-dll-dependency-cache : 禁用依赖walker缓存。 将导致创建分发文件夹的时间更长,但可能会在怀疑缓存导致错误的情况下使用。

  • --force-dll-dependency-cache-update : 更新依赖 walker 缓存。 将导致创建分发文件夹的时间更长,但可能会在缓存被怀疑导致错误或已知需要更新的情况下使用。

10、后端C编译器选项:

  • --clang : 强制使用clang。 在 Windows 上,这需要一个工作的 Visual Studio 版本才能搭载。默认为关闭。

  • --mingw64 : 在 Windows 上强制使用 MinGW64。 默认为关闭。

  • --msvc=MSVC_VERSION : 强制在 Windows 上使用特定的 MSVC 版本。允许的值是例如 “14.2”(MSVC 2019),为已安装的编译器列表指定非法值,或使用“最新”。 请注意,仅真正支持最新的 MSVC,您可以使用“最新”来强制执行。如果安装,则默认为 Windows 上的 MSVC,否则为 MinGW64。

  • -j N, --jobs=N :指定允许的并行 C 编译器作业数。 默认为系统 CPU 计数。

  • --lto=choice : 使用链接时间优化(MSVC、gcc、clang)。允许的值为“yes”、“no”和“auto”(当它已知有效时)。 默认为“自动”。

  • --static-libpython=choice : 使用 Python 的静态链接库。 允许的值为“yes”、“no”和“auto”(当它已知有效时)。默认为“auto”。

  • --disable-ccache : 不要尝试使用 ccache(gcc、clang 等)或 clcache(MSVC、clangcl)。

10、PGO 编译:

  • --pgo : 启用 C 级配置文件引导优化 (PGO),方法是首先执行专门的构建以进行配置文件运行,然后使用结果反馈到 C 编译中。 注意:这是实验性的,还不能与 Nuitka 的独立模式一起使用。 默认为关闭。

  • --pgo-args=PGO_ARGS : 在配置文件引导优化的情况下要传递的参数。 这些在 PGO 分析运行期间传递给特殊构建的可执行文件。 默认为空。

  • --pgo-executable=PGO_EXECUTABLE : 收集配置文件信息时执行的命令。 仅当您需要通过准备运行它的脚本启动它时才使用它。 默认使用创建的程序。

11、打包辅助功能:

  • --quiet : 禁用所有信息输出,但显示警告。默认为关闭。

  • --show-scons :在非安静模式下运行 Scons,显示执行的命令。 默认为关闭。

  • --show-progress :提供进度信息和统计数据。 默认为关闭。

  • --no-progressbar : 禁用进度条输出(如果安装了 tqdm)。默认为关闭。

  • --show-memory : 提供内存信息和统计信息。 默认为关闭。

  • --show-modules : 提供包含的模块和 DLL 的信息 默认为关闭。

  • --show-modules-output=PATH : 在哪里输出–show-modules,应该是一个文件名。默认是标准输出。

  • --report=COMPILATION_REPORT_FILENAME : 报告模块包含在 XML 输出文件中。 默认为关闭。

  • --verbose :输出所采取行动的详细信息,尤其是。 在优化中。 可以变成很多。 默认为关闭。

  • --verbose-output=PATH : 在哪里输出–verbose,应该是一个文件名。默认是标准输出。

12、Windows 特定设置选项:

  • --windows-disable-console : 为 Windows 编译时,禁用控制台窗口。 默认为关闭。

  • --windows-icon-from-ico=ICON_PATH : 添加可执行图标。 可以针对不同的分辨率或内部带有多个图标的文件多次给出。 在后一种情况下,您还可以使用 # 作为后缀,其中 n 是从 1 开始的整数索引,指定要包含的特定图标,而忽略所有其他图标。

  • --windows-icon-from-exe=ICON_EXE_PATH : 从此现有可执行文件复制可执行图标(仅限 Windows)。

  • --onefile-windows-splash-screen-image=SPLASH_SCREEN_IMAGE : 为 Windows 和 onefile 编译时,在加载应用程序时显示此内容。 默认为关闭。

  • --windows-uac-admin : 请求 Windows 用户控制,以在执行时授予管理员权限。(仅限 Windows)。 默认为关闭。

  • --windows-uac-uiaccess : 请求 Windows 用户控制,强制仅从几个文件夹运行,远程桌面访问。 (仅限 Windows)。 默认为关闭。

  • --windows-company-name=WINDOWS_COMPANY_NAME : 在 Windows 版本信息中使用的公司名称。 当需要添加版本资源时,需要文件或产品版本之一,例如 指定产品名称或公司名称。默认为未使用。

  • --windows-product-name=WINDOWS_PRODUCT_NAME : 在 Windows 版本信息中使用的产品名称。 默认为二进制文件的基本文件名。

  • --windows-file-version=WINDOWS_FILE_VERSION : 在 Windows 版本信息中使用的文件版本。必须是最多 4 个数字的序列,例如 1.0.0.0,只允许这种格式。 当需要添加版本资源时,需要文件或产品版本之一,例如 指定产品名称或公司名称。 默认为未使用。

  • --windows-product-version=WINDOWS_PRODUCT_VERSION : 在 Windows 版本信息中使用的产品版本。必须是最多 4 个数字的序列,例如 1.0.0.0,只允许这种格式。 当需要添加版本资源时,需要文件或产品版本之一,例如 指定产品名称或公司名称。 默认为未使用。

  • --windows-file-description=WINDOWS_FILE_DESCRIPTION : Windows 版本信息中的文件使用说明。 当需要添加版本资源时,需要文件或产品版本之一,例如 指定产品名称或公司名称。 默认为废话。

  • --windows-onefile-tempdir-spec=ONEFILE_TEMPDIR_SPEC : 将此用作临时文件夹。 默认为’%TEMP%\onefile_%PID%_%TIME%’,即系统临时目录。

  • --windows-force-stdout-spec=WINDOWS_FORCE_STDOUT_SPEC : 强制程序的标准输出到这个位置。 对于禁用控制台的程序和使用 Nuitka 的 Windows 服务插件的程序很有用。 默认为不活动,使用例如 '%PROGRAM%.out.txt’,即程序附近的文件。

  • --windows-force-stderr-spec=WINDOWS_FORCE_STDERR_SPEC : 强制程序的标准错误到这个位置。 对于禁用控制台的程序和使用 Nuitka 的 Windows 服务插件的程序很有用。 默认为不活动,使用例如 '%PROGRAM%.err.txt’,即程序附近的文件。

13、macOS特定设置选项:

  • --macos-onefile-icon=ICON_PATH : 添加可执行图标以供二进制文件使用。 只能给一次。 如果可用,默认为 Python 图标。

  • --macos-disable-console : 为 macOS 编译时,禁用控制台窗口并创建 GUI 应用程序。 默认为关闭。

  • --macos-create-app-bundle : 为 macOS 编译时,创建一个包而不是一个普通的二进制应用程序。 目前是实验性的和不完整的。 目前这是解锁控制台禁用的唯一方法。默认为关闭。

  • --macos-signed-app-name=MACOS_SIGNED_APP_NAME : 用于 macOS 签名的应用程序名称。遵循 com.yourcompany.appname 命名结果以获得最佳结果,因为它们必须是全局唯一的,并且将授予受保护的 API 访问权限。

  • --macos-app-name=MACOS_APP_NAME : 要在 macOS 捆绑包信息中使用的产品名称。 默认为二进制文件的基本文件名。

  • --macos-app-version=MACOS_APP_VERSION : 在 macOS 捆绑信息中使用的产品版本。如果未给出,则默认为 1.0。

14、Linux特定设置选项:

  • --linux-onefile-icon=ICON_PATH : 为要使用的 onefile 二进制文件添加可执行图标。 只能给一次。 如果可用,默认为 Python 图标。

15、插件控制:

  • --enable-plugin=PLUGIN_NAME, --plugin-enable=PLUGIN_NAME : 启用插件。 必须是插件名称。 使用 --plugin-list 查询完整列表并退出。 默认为空。

  • --disable-plugin=PLUGIN_NAME, --plugin-disable=PLUGIN_NAME : 禁用插件。 必须是插件名称。 使用 --plugin-list 查询完整列表并退出。 默认为空。

  • --plugin-no-detection : 插件可以检测它们是否被使用,您可以通过“–disable-plugin=plugin-that-warned”禁用警告,或者您可以使用此选项完全禁用该机制,这也可以稍微加快编译速度 当然,因为一旦您确定要使用哪些插件,此检测代码就会徒劳运行。 默认为关闭。

  • --plugin-list : 显示所有可用插件的列表并退出。 默认为关闭。

  • --user-plugin=PATH : 用户插件的文件名。 可以多次给予。 默认为空。

  • --persist-source-changes : 将源代码更改写入原始 Python 文件。 小心使用。 可能需要权限,如果插件代码更改适用于标准 Python,则最适合在 virtualenv 中使用进行调试,或者即使使用纯 Python 也能从消除臃肿中受益。 默认False。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多