Python 规则

报告问题 查看源代码 Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

规则

py_binary

查看规则来源
py_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_group_compatible_with, exec_properties, features, imports, interpreter_args, legacy_create_init, licenses, main, main_module, output_licenses, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, pyi_deps, pyi_srcs, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, toolchains, visibility)

参数

属性
name

名称;必需

相应目标的唯一名称。

deps

标签列表;默认值为 []

要链接到目标的其他库的列表。 请参阅有关 [`deps` 属性(通常由规则定义)](https://bazel.build/reference/be/common-definitions#typical-attributes)的注释。这些通常是 `py_library` 规则。 仅提供运行时使用的数据文件的目标应放在 `data` 属性中。
srcs

标签列表;必需

处理后用于创建目标的 Python 源文件列表。这包括您签入的所有代码,还可能包括生成的源文件。`.py` 文件属于 `srcs`,库目标属于 `deps`。运行时可能需要的其他二进制文件属于 `data`。
data

标签列表;默认值为 []

此库在运行时所需的文件列表。请参阅有关 [`data` 属性(通常由规则定义)](https://bazel.build/reference/be/common-definitions#typical-attributes)的注释。 没有像 `cc_embed_data` 和 `go_embed_data` 那样的 `py_embed_data`。这是因为 Python 具有运行时资源的概念。
distribs

字符串列表;默认值为 []

imports

字符串列表;默认值为 []

要添加到 PYTHONPATH 的导入目录列表。 受“设为变量”替换的影响。系统将为相应规则及其依赖的所有规则添加这些导入目录(注意:不包括相应规则所依赖的规则)。每个目录都将通过依赖于此规则的 `py_binary` 规则添加到 `PYTHONPATH`。字符串是相对于 repo-runfiles-root 的路径。 不允许使用绝对路径(以“/”开头的路径)和引用执行根目录上方路径的路径,否则会导致错误。
interpreter_args

字符串列表;默认值为 []

仅适用于解释器的实参。 解释器支持的实参特定于该解释器。对于 CPython,请参阅 https://docs.python.org/3/using/cmdline.html。 ::: 仅支持 {obj}`--bootstrap_impl=script`。否则会被忽略。 :: :::{seealso} {obj}`RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS` 环境变量 ::: :::{versionadded} 1.3.0 :::
legacy_create_init

整数;默认值为 -1

是否在 runfiles 树中隐式创建空的 `__init__.py` 文件。 这些文件是在包含 Python 源代码或共享库的每个目录以及这些目录的每个父目录(不包括代码库根目录)中创建的。默认值 `-1`(自动)表示 true,除非使用了 `--incompatible_default_to_explicit_init_py`。如果为 false,用户负责创建(可能为空)`__init__.py` 文件,并根据需要将其添加到 Python 目标的 `srcs` 中。
main

标签;默认值为 None

可选;作为应用主要入口点的源文件的名称。此文件还必须在 `srcs` 中列出。如果未指定,则改为使用附加了 `.py` 的 `name`。如果 `name` 与 `srcs` 中的任何文件名都不匹配,则必须指定 `main`。 此参数与 {obj}`main_module` 互斥。
main_module

字符串;默认值为 ""

要作为主程序执行的模块名称。 设置后,不需要 `srcs`,并假定模块由依赖项提供。 如需详细了解如何将模块作为主程序运行,请参阅 https://docs.python.org/3/using/cmdline.html#cmdoption-m。 此属性与 {obj}`main` 互斥。 :::{versionadded} 1.3.0 :::
precompile

字符串;默认值为 "inherit"

是否应预编译 **此目标** 的 py 源文件。 值: * `inherit`:允许下游二进制文件决定是否使用预编译文件。 * `enabled`:在 build 时编译 Python 源文件。 * `disabled`:在 build 时不编译 Python 源文件。 :::{seealso} * {flag}`--precompile` 标志,在某些情况下可以替换此属性,并且在 build 时会影响所有目标。 * {obj}`pyc_collection` 属性,用于以每个目标为基础,以传递方式启用预编译。 * [预编译](precompiling) 文档,其中包含有关使用预编译的指南。 :::
precompile_invalidation_mode

字符串;默认值为 "auto"

如何验证预编译文件是否与其关联的源文件保持同步。可能的值包括: * `auto`:有效值将由其他 build 设置自动确定。 * `checked_hash`:如果源文件的哈希与 pyc 文件中记录的哈希匹配,则使用 pyc 文件。当您处理可能需要修改的代码时,此功能最为有用。 * `unchecked_hash`:始终使用 pyc 文件;不检查 pyc 的哈希值是否与源文件一致。如果代码不会被修改,此方法最为有用。 如需详细了解 pyc 失效模式,请参阅 https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
precompile_optimize_level

整数;默认值为 0

预编译文件的优化级别。 如需详细了解优化级别,请参阅 https://docs.python.org/3/library/functions.html#compile 中 `compile()` 函数的 `optimize` 实参文档。 注意:值 `-1` 表示“当前解释器”,即生成 pyc 时在 build 期间使用的解释器,而不是代码实际运行时在运行时使用的解释器。
precompile_source_retention

字符串;默认值为 "inherit"

确定在编译源文件时,是否将源文件保留在生成的输出中。有效值包括: * `inherit`:从 {flag}`--precompile_source_retention` 标志继承值。 * `keep_source`:包含原始 Python 源代码。 * `omit_source`:不包含原始 py 源代码。
pyc_collection

字符串;默认值为 "inherit"

确定是否应手动包含来自依赖项的 pyc 文件。 有效值为: * `inherit`:从 {flag}`--precompile` 继承值。 * `include_pyc`:添加来自依赖项的隐式生成的 pyc 文件。即指定了 {attr}`precompile="inherit"` 的目标的 pyc 文件。 * `disabled`:不添加隐式生成的 pyc 文件。请注意,pyc 文件可能仍然来自在目标级别启用预编译的依赖项。
pyi_deps

标签列表;默认值为 []

提供库所需类型定义的依赖项。 这些是满足由 `typing.TYPE_CHECKING` 保护的导入的依赖项。这些依赖项仅在 build 时使用,不包含在可运行的程序中(不过,打包规则可能会包含它们)。 ::{versionadded} 1.1.0 :::
pyi_srcs

标签列表;默认值为 []

库的类型定义文件。 这些文件通常是 `.pyi` 文件,但也可以是类型检查器特定格式的其他文件类型。这些文件仅是构建时依赖项,不包含在可运行的程序中(不过,打包规则可能会包含它们)。 ::{versionadded} 1.1.0 :::
python_version

字符串;默认值为 ""

相应目标应使用的 Python 版本。 该值应采用“X.Y”或“X.Y.Z”(或兼容)格式。如果为空或未指定,则继承传入配置的 {obj}`--python_version` 标志。为了实现向后兼容,系统接受值“PY2”和“PY3”,但会将它们视为空值/未指定的值。 ::: 为了能够使用所请求的版本,必须配置与 Python 版本匹配的工具链。如果没有,则可能会被默默忽略,或者可能会发生错误,具体取决于工具链配置。 :: :::{versionchanged} 1.1.0 此属性已从仅接受“PY2”和“PY3”值更改为接受任意 Python 版本。 :::
srcs_version

字符串;默认值为 ""

已废弃,未使用,不执行任何操作。
stamp

整数;默认值为 -1

是否将 build 信息编码到二进制文件中。可能的值: * `stamp = 1`:始终将 build 信息标记到二进制文件中,即使在 `--nostamp` build 中也是如此。**应避免使用此设置**,因为它可能会终止二进制文件和依赖于它的任何下游操作的远程缓存。* `stamp = 0`:始终将 build 信息替换为常量值。这样可以实现良好的 build 结果缓存。 * `stamp = -1`:build 信息的嵌入由 `--[no]stamp` 标志控制。 除非已加戳记的二进制文件的依赖项发生变化,否则不会重新构建这些二进制文件。 警告:标记可能会通过减少缓存命中次数来损害 build 性能,应尽可能避免使用。

py_library

查看规则来源
py_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_group_compatible_with, exec_properties, features, imports, licenses, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyi_deps, pyi_srcs, restricted_to, srcs_version, tags, target_compatible_with, testonly, toolchains, visibility)
可依赖的 Python 代码库。 默认输出: * 输入 Python 源代码 * 源代码的预编译制品。 注意:预编译会影响最终的 runfiles 中包含哪些默认输出。如需了解详情,请参阅与预编译相关的属性和标志。 ::{versionchanged} 0.37.0 不再直接将源文件添加到 runfiles。 :::

参数

属性
name

名称;必需

相应目标的唯一名称。

deps

标签列表;默认值为 []

要链接到目标的其他库的列表。 请参阅有关 [`deps` 属性(通常由规则定义)](https://bazel.build/reference/be/common-definitions#typical-attributes)的注释。这些通常是 `py_library` 规则。 仅提供运行时使用的数据文件的目标应放在 `data` 属性中。
srcs

标签列表;默认值为 []

处理后用于创建目标的 Python 源文件列表。这包括您签入的所有代码,还可能包括生成的源文件。`.py` 文件属于 `srcs`,库目标属于 `deps`。运行时可能需要的其他二进制文件属于 `data`。
data

标签列表;默认值为 []

此库在运行时所需的文件列表。请参阅有关 [`data` 属性(通常由规则定义)](https://bazel.build/reference/be/common-definitions#typical-attributes)的注释。 没有像 `cc_embed_data` 和 `go_embed_data` 那样的 `py_embed_data`。这是因为 Python 具有运行时资源的概念。
distribs

字符串列表;默认值为 []

imports

字符串列表;默认值为 []

要添加到 PYTHONPATH 的导入目录列表。 受“设为变量”替换的影响。系统将为相应规则及其依赖的所有规则添加这些导入目录(注意:不包括相应规则所依赖的规则)。每个目录都将通过依赖于此规则的 `py_binary` 规则添加到 `PYTHONPATH`。字符串是相对于 repo-runfiles-root 的路径。 不允许使用绝对路径(以“/”开头的路径)和引用执行根目录上方路径的路径,否则会导致错误。
precompile

字符串;默认值为 "inherit"

是否应预编译 **此目标** 的 py 源文件。 值: * `inherit`:允许下游二进制文件决定是否使用预编译文件。 * `enabled`:在 build 时编译 Python 源文件。 * `disabled`:在 build 时不编译 Python 源文件。 :::{seealso} * {flag}`--precompile` 标志,在某些情况下可以替换此属性,并且在 build 时会影响所有目标。 * {obj}`pyc_collection` 属性,用于以每个目标为基础,以传递方式启用预编译。 * [预编译](precompiling) 文档,其中包含有关使用预编译的指南。 :::
precompile_invalidation_mode

字符串;默认值为 "auto"

如何验证预编译文件是否与其关联的源文件保持同步。可能的值包括: * `auto`:有效值将由其他 build 设置自动确定。 * `checked_hash`:如果源文件的哈希与 pyc 文件中记录的哈希匹配,则使用 pyc 文件。当您处理可能需要修改的代码时,此功能最为有用。 * `unchecked_hash`:始终使用 pyc 文件;不检查 pyc 的哈希值是否与源文件一致。如果代码不会被修改,此方法最为有用。 如需详细了解 pyc 失效模式,请参阅 https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
precompile_optimize_level

整数;默认值为 0

预编译文件的优化级别。 如需详细了解优化级别,请参阅 https://docs.python.org/3/library/functions.html#compile 中 `compile()` 函数的 `optimize` 实参文档。 注意:值 `-1` 表示“当前解释器”,即生成 pyc 时在 build 期间使用的解释器,而不是代码实际运行时在运行时使用的解释器。
precompile_source_retention

字符串;默认值为 "inherit"

确定在编译源文件时,是否将源文件保留在生成的输出中。有效值包括: * `inherit`:从 {flag}`--precompile_source_retention` 标志继承值。 * `keep_source`:包含原始 Python 源代码。 * `omit_source`:不包含原始 py 源代码。
pyi_deps

标签列表;默认值为 []

提供库所需类型定义的依赖项。 这些是满足由 `typing.TYPE_CHECKING` 保护的导入的依赖项。这些依赖项仅在 build 时使用,不包含在可运行的程序中(不过,打包规则可能会包含它们)。 ::{versionadded} 1.1.0 :::
pyi_srcs

标签列表;默认值为 []

库的类型定义文件。 这些文件通常是 `.pyi` 文件,但也可以是类型检查器特定格式的其他文件类型。这些文件仅是构建时依赖项,不包含在可运行的程序中(不过,打包规则可能会包含它们)。 ::{versionadded} 1.1.0 :::
srcs_version

字符串;默认值为 ""

已废弃,未使用,不执行任何操作。

py_test

查看规则来源
py_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, imports, interpreter_args, legacy_create_init, licenses, local, main, main_module, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, pyi_deps, pyi_srcs, python_version, restricted_to, shard_count, size, srcs_version, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility)

参数

属性
name

名称;必需

相应目标的唯一名称。

deps

标签列表;默认值为 []

要链接到目标的其他库的列表。 请参阅有关 [`deps` 属性(通常由规则定义)](https://bazel.build/reference/be/common-definitions#typical-attributes)的注释。这些通常是 `py_library` 规则。 仅提供运行时使用的数据文件的目标应放在 `data` 属性中。
srcs

标签列表;必需

处理后用于创建目标的 Python 源文件列表。这包括您签入的所有代码,还可能包括生成的源文件。`.py` 文件属于 `srcs`,库目标属于 `deps`。运行时可能需要的其他二进制文件属于 `data`。
data

标签列表;默认值为 []

此库在运行时所需的文件列表。请参阅有关 [`data` 属性(通常由规则定义)](https://bazel.build/reference/be/common-definitions#typical-attributes)的注释。 没有像 `cc_embed_data` 和 `go_embed_data` 那样的 `py_embed_data`。这是因为 Python 具有运行时资源的概念。
distribs

字符串列表;默认值为 []

imports

字符串列表;默认值为 []

要添加到 PYTHONPATH 的导入目录列表。 受“设为变量”替换的影响。系统将为相应规则及其依赖的所有规则添加这些导入目录(注意:不包括相应规则所依赖的规则)。每个目录都将通过依赖于此规则的 `py_binary` 规则添加到 `PYTHONPATH`。字符串是相对于 repo-runfiles-root 的路径。 不允许使用绝对路径(以“/”开头的路径)和引用执行根目录上方路径的路径,否则会导致错误。
interpreter_args

字符串列表;默认值为 []

仅适用于解释器的实参。 解释器支持的实参特定于该解释器。对于 CPython,请参阅 https://docs.python.org/3/using/cmdline.html。 ::: 仅支持 {obj}`--bootstrap_impl=script`。否则会被忽略。 :: :::{seealso} {obj}`RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS` 环境变量 ::: :::{versionadded} 1.3.0 :::
legacy_create_init

整数;默认值为 -1

是否在 runfiles 树中隐式创建空的 `__init__.py` 文件。 这些文件是在包含 Python 源代码或共享库的每个目录以及这些目录的每个父目录(不包括代码库根目录)中创建的。默认值 `-1`(自动)表示 true,除非使用了 `--incompatible_default_to_explicit_init_py`。如果为 false,用户负责创建(可能为空)`__init__.py` 文件,并根据需要将其添加到 Python 目标的 `srcs` 中。
main

标签;默认值为 None

可选;作为应用主要入口点的源文件的名称。此文件还必须在 `srcs` 中列出。如果未指定,则改为使用附加了 `.py` 的 `name`。如果 `name` 与 `srcs` 中的任何文件名都不匹配,则必须指定 `main`。 此参数与 {obj}`main_module` 互斥。
main_module

字符串;默认值为 ""

要作为主程序执行的模块名称。 设置后,不需要 `srcs`,并假定模块由依赖项提供。 如需详细了解如何将模块作为主程序运行,请参阅 https://docs.python.org/3/using/cmdline.html#cmdoption-m。 此属性与 {obj}`main` 互斥。 :::{versionadded} 1.3.0 :::
precompile

字符串;默认值为 "inherit"

是否应预编译 **此目标** 的 py 源文件。 值: * `inherit`:允许下游二进制文件决定是否使用预编译文件。 * `enabled`:在 build 时编译 Python 源文件。 * `disabled`:在 build 时不编译 Python 源文件。 :::{seealso} * {flag}`--precompile` 标志,在某些情况下可以替换此属性,并且在 build 时会影响所有目标。 * {obj}`pyc_collection` 属性,用于以每个目标为基础,以传递方式启用预编译。 * [预编译](precompiling) 文档,其中包含有关使用预编译的指南。 :::
precompile_invalidation_mode

字符串;默认值为 "auto"

如何验证预编译文件是否与其关联的源文件保持同步。可能的值包括: * `auto`:有效值将由其他 build 设置自动确定。 * `checked_hash`:如果源文件的哈希与 pyc 文件中记录的哈希匹配,则使用 pyc 文件。当您处理可能需要修改的代码时,此功能最为有用。 * `unchecked_hash`:始终使用 pyc 文件;不检查 pyc 的哈希值是否与源文件一致。如果代码不会被修改,此方法最为有用。 如需详细了解 pyc 失效模式,请参阅 https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
precompile_optimize_level

整数;默认值为 0

预编译文件的优化级别。 如需详细了解优化级别,请参阅 https://docs.python.org/3/library/functions.html#compile 中 `compile()` 函数的 `optimize` 实参文档。 注意:值 `-1` 表示“当前解释器”,即生成 pyc 时在 build 期间使用的解释器,而不是代码实际运行时在运行时使用的解释器。
precompile_source_retention

字符串;默认值为 "inherit"

确定在编译源文件时,是否将源文件保留在生成的输出中。有效值包括: * `inherit`:从 {flag}`--precompile_source_retention` 标志继承值。 * `keep_source`:包含原始 Python 源代码。 * `omit_source`:不包含原始 py 源代码。
pyc_collection

字符串;默认值为 "inherit"

确定是否应手动包含来自依赖项的 pyc 文件。 有效值为: * `inherit`:从 {flag}`--precompile` 继承值。 * `include_pyc`:添加来自依赖项的隐式生成的 pyc 文件。即指定了 {attr}`precompile="inherit"` 的目标的 pyc 文件。 * `disabled`:不添加隐式生成的 pyc 文件。请注意,pyc 文件可能仍然来自在目标级别启用预编译的依赖项。
pyi_deps

标签列表;默认值为 []

提供库所需类型定义的依赖项。 这些是满足由 `typing.TYPE_CHECKING` 保护的导入的依赖项。这些依赖项仅在 build 时使用,不包含在可运行的程序中(不过,打包规则可能会包含它们)。 ::{versionadded} 1.1.0 :::
pyi_srcs

标签列表;默认值为 []

库的类型定义文件。 这些文件通常是 `.pyi` 文件,但也可以是类型检查器特定格式的其他文件类型。这些文件仅是构建时依赖项,不包含在可运行的程序中(不过,打包规则可能会包含它们)。 ::{versionadded} 1.1.0 :::
python_version

字符串;默认值为 ""

相应目标应使用的 Python 版本。 该值应采用“X.Y”或“X.Y.Z”(或兼容)格式。如果为空或未指定,则继承传入配置的 {obj}`--python_version` 标志。为了实现向后兼容,系统接受值“PY2”和“PY3”,但会将它们视为空值/未指定的值。 ::: 为了能够使用所请求的版本,必须配置与 Python 版本匹配的工具链。如果没有,则可能会被默默忽略,或者可能会发生错误,具体取决于工具链配置。 :: :::{versionchanged} 1.1.0 此属性已从仅接受“PY2”和“PY3”值更改为接受任意 Python 版本。 :::
srcs_version

字符串;默认值为 ""

已废弃,未使用,不执行任何操作。
stamp

整数;默认值为 0

是否将 build 信息编码到二进制文件中。可能的值: * `stamp = 1`:始终将 build 信息标记到二进制文件中,即使在 `--nostamp` build 中也是如此。**应避免使用此设置**,因为它可能会终止二进制文件和依赖于它的任何下游操作的远程缓存。* `stamp = 0`:始终将 build 信息替换为常量值。这样可以实现良好的 build 结果缓存。 * `stamp = -1`:build 信息的嵌入由 `--[no]stamp` 标志控制。 除非已加戳记的二进制文件的依赖项发生变化,否则不会重新构建这些二进制文件。 警告:标记可能会通过减少缓存命中次数来损害 build 性能,应尽可能避免使用。

py_runtime

查看规则来源
py_runtime(name, abi_flags, bootstrap_template, compatible_with, coverage_tool, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, files, implementation_name, interpreter, interpreter_path, interpreter_version_info, package_metadata, pyc_tag, python_version, restricted_to, site_init_template, stage2_bootstrap_template, stub_shebang, tags, target_compatible_with, testonly, toolchains, visibility, zip_main_template)
表示用于执行 Python 代码的 Python 运行时。 `py_runtime` 目标可以表示 *平台运行时* 或 *内置运行时*。平台运行时会访问已知路径中的系统安装的解释器,而 build 内运行时会指向充当解释器的可执行目标。在这两种情况下,“解释器”是指能够运行通过命令行传递的 Python 脚本的任何可执行二进制文件或封装脚本,并且遵循与标准 CPython 解释器相同的惯例。 平台运行时本质上是非密封的。它要求目标平台在特定路径中具有解释器。内置运行时可能是密封的,也可能不是密封的,具体取决于它是指向已签入的解释器还是指向访问系统解释器的封装脚本。 示例 ``` load("@rules_python//python:py_runtime.bzl", "py_runtime") py_runtime( name = "python-2.7.12", files = glob(["python-2.7.12/**"]), interpreter = "python-2.7.12/bin/python", ) py_runtime( name = "python-3.6.0", interpreter_path = "/opt/pyenv/versions/3.6.0/bin/python", ) ```

参数

属性
name

名称;必需

相应目标的唯一名称。

abi_flags

字符串;默认值为 ""

运行时的 ABI 标志,即 `sys.abiflags`。 如果未设置,则将根据标志进行设置。
bootstrap_template

标签;默认值为 "@rules_python//python/private:bootstrap_template"

要使用的引导脚本模板文件。应包含 %python_binary%、%workspace_name%、%main% 和 %imports%。 此模板在展开后会成为用于启动进程的可执行文件,因此负责初始引导操作,例如查找 Python 解释器、runfiles 和构建用于运行预期 Python 应用的环境。 虽然此属性目前是可选属性,但当 Python 规则移出 Bazel 本身时,它将成为必需属性。 展开的确切变量名称是不稳定的 API,可能会发生变化。 当 Python 规则移出 Bazel 本身时,该 API 将变得更加稳定。 如需了解更多变量,请参阅 @bazel_tools//tools/python:python_bootstrap_template.txt。
coverage_tool

标签;默认值为 None

此目标用于从 {rule}`py_binary` 和 {rule}`py_test` 目标收集代码覆盖率信息。 如果设置了此属性,目标必须生成单个文件或为可执行目标。单个文件的路径或可执行文件(如果目标是可执行文件)决定了 Python 代码覆盖率工具的入口点。启用覆盖率后,目标及其 runfiles 将添加到 runfiles 中。 该工具的入口点必须可由 Python 解释器加载(例如 `.py` 或 `.pyc` 文件)。它必须接受 [`coverage.py`](https://coverage.readthedocs.io) 的命令行实参,至少包括 `run` 和 `lcov` 子命令。
files

标签列表;默认值为 []

对于 build 内运行时,这是构成该运行时的文件集。 这些文件将添加到使用此运行时环境的 Python 二进制文件的 runfiles 中。对于平台运行时,不得设置此属性。
implementation_name

字符串;默认值为 "cpython"

Python 实现名称 (`sys.implementation.name`)
interpreter

标签;默认值为 None

对于内置运行时,这是要作为解释器调用的目标。它可以是以下任一内容: * 单个文件,即解释器二进制文件。假定此类解释器是自包含的单文件可执行文件,或者任何支持文件都在 `files` 中指定。 * 可执行目标。目标的执行文件将是解释器二进制文件。 任何其他默认输出 (`target.files`) 和纯文件 runfiles (`runfiles.files`) 都会自动包含,就像在 `files` 属性中指定的一样。 注意:目标的 runfiles 可能尚未正确传递给工具链/解释器的使用者,请参阅 bazel-contrib/rules_python/issues/1612 对于平台运行时(即设置了 `interpreter_path`),不得设置此属性。
interpreter_path

字符串;默认值为 ""

对于平台运行时,这是目标平台上 Python 解释器的绝对路径。对于内置运行时,不得设置此属性。
interpreter_version_info

字典:字符串 -> 字符串;默认值为 {}

相应运行时提供的解释器的版本信息。 如果未指定,则使用 {obj}`--python_version` 支持的键与 `sys.version_info` 的名称一致。虽然输入值是字符串,但大多数都会转换为整数。支持的键包括: * major:int,主要版本号 * minor:int,次要版本号 * micro:可选 int,微版本号 * releaselevel:可选 str,发布级别 * serial:可选 int,发布序列号 :::{versionchanged} 0.36.0 {obj}`--python_version` 决定了默认值。 :::
pyc_tag

字符串;默认值为 ""

可选字符串;pyc 文件名的标记部分,例如 `foo.cpython-39.pyc` 的 `cpython-39` 中缀。请参阅 PEP 3147。如果未指定,系统将根据 `implementation_name` 和 `interpreter_version_info` 计算该值。如果没有 pyc_tag,则只有无源 pyc 生成功能可以正常运行。
python_version

字符串;默认值为 "PY3"

此运行时是否适用于 Python 主要版本 2 或 3。有效值为 `"PY2"` 和 `"PY3"`。 默认值由 `--incompatible_py3_is_default` 标志控制。 不过,未来此属性将成为必需属性,且没有默认值。
site_init_template

标签;默认值为 "@rules_python//python/private:site_init_template"

供解释器在启动时运行的特定于二进制文件的网站初始化钩子的模板。 ::{versionadded} 0.41.0 :::
stage2_bootstrap_template

标签;默认值为 "@rules_python//python/private:stage2_bootstrap_template"

启用两阶段引导时要使用的模板 :::{seealso} {obj}`PyRuntimeInfo.stage2_bootstrap_template` 和 {obj}`--bootstrap_impl` :::
stub_shebang

字符串;默认值为 "#!/usr/bin/env python3"

在执行 {rule}`py_binary` 目标时,预先添加到引导 Python 桩脚本的“Shebang”表达式。 有关动机,请参阅 https://github.com/bazelbuild/bazel/issues/8685。 不适用于 Windows。
zip_main_template

标签;默认值为 "@rules_python//python/private:zip_main_template"

用于 ZIP 顶级 `__main__.py` 文件的模板。 当运行“python foo.zip”时,此文件将成为执行的入口点。 ::{seealso} {obj}`PyRuntimeInfo.zip_main_template` 字段。 :::