规则
- <ph type="x-smartling-placeholder"></ph> py_binary
- <ph type="x-smartling-placeholder"></ph> py_library
- <ph type="x-smartling-placeholder"></ph> py_test
- <ph type="x-smartling-placeholder"></ph> py_runtime
py_binary
<ph type="x-smartling-placeholder"></ph> 查看规则来源py_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, imports, legacy_create_init, licenses, main, output_licenses, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, toolchains, visibility)
py_binary
是一个可执行 Python 程序,包含
一组 .py
源文件(可能是
其他 py_library
规则)、*.runfiles
目录树中包含 Google Cloud 控制台中需要的所有代码和数据,
以及一个用于启动该程序的存根脚本
正确的初始环境和数据。
示例
py_binary( name = "foo", srcs = ["foo.py"], data = [":transform"], # a cc_binary which we invoke at run time deps = [ ":foolib", # a py_library ], )
如果您想从其他二进制文件中运行 py_binary
,或
测试(例如,运行 Python 二进制文件以设置
则正确的方法是使用另一个二进制文件或
测试依赖于其数据部分中的 py_binary
。另一个
然后,二进制文件可以相对于源代码找到 py_binary
目录。
py_binary( name = "test_main", srcs = ["test_main.py"], deps = [":testing"], ) java_library( name = "testing", srcs = glob(["*.java"]), data = [":test_main"] )
参数
属性 | |
---|---|
name |
姓名;必需 此目标的唯一名称。 如果未指定 main ,则应该与名称相同
作为应用的主要入口点的源文件
去掉扩展名。例如,如果您的入口点称为
main.py ,则您的姓名应为 main 。
|
deps
|
标签列表;默认值为 deps 的一般评论:
<ph type="x-smartling-placeholder"></ph>
大多数构建规则定义的典型属性。
这些通常是
py_library 规则。
|
srcs
|
标签列表;必需 为创建目标而处理的源 (.py ) 文件的列表。
这包括您已签入的所有代码和所有已生成的源文件。库目标
而属于 deps ,而运行时所需的其他二进制文件则属于
data 。
|
imports
|
字符串列表;默认值为 PYTHONPATH 的导入目录的列表。
需遵循替换 "Make variable" 的规定。这些导入
目录,以及依赖于该规则的所有规则(注意:而非
规则所依赖的规则系统会通过以下方式将每个目录添加到
绝对路径(以 |
legacy_create_init
|
整数;默认值为 --incompatible_default_to_explicit_init_py 。如果为 false,则用户
负责创建(可能为空的)__init__.py 文件,并将其添加到
根据需要 srcs 的 Python 目标。
|
main
|
标签;默认值为 srcs 中列出。如果未指定
改用 name (参见上文)。如果 name
匹配 srcs 中的任何文件名,必须指定 main 。
|
python_version
|
String;不可配置;默认值为 deps )
3.有效值为 "PY2" 和 "PY3" (默认值)。
Python 版本始终会重置(可能默认)为 而无论在命令行中指定的版本,还是通过 依赖于此定位条件的其他更高层级的目标。 如果要对当前的 Python 版本执行 bug 警告:此属性设置 Bazel 构建目标的版本。
但由于 #4815,
生成的桩脚本可能仍会在运行时调用错误的解释器版本。请参阅
这个
解决方法,其中涉及定义一个 |
srcs_version
|
String;默认值为 srcs 与任一 Python 兼容
2 和/或 Python 3。要实际设置 Python 运行时版本,请使用
python_version 属性
可执行的 Python 规则(py_binary 或 py_test )。
允许的值包括: 请注意,只有可执行规则( 如需获取有关哪些依赖项引入版本要求的诊断信息,
您可以针对目标运行 bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt 的文件,用于提供信息
您的目标需要一个 Python 版本或另一个版本的原因。请注意,即使
由于版本冲突,给定目标未能构建。
|
stamp
|
整数;默认值为
除非其依赖项发生变化,否则带时间戳的二进制文件不会被重新构建。 |
py_library
<ph type="x-smartling-placeholder"></ph> 查看规则来源py_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, imports, licenses, restricted_to, srcs_version, tags, target_compatible_with, testonly, visibility)
参数
属性 | |
---|---|
name |
姓名;必需 此目标的唯一名称。 |
deps
|
标签列表;默认值为 deps 的一般评论:
<ph type="x-smartling-placeholder"></ph>
大多数构建规则定义的典型属性。
这些通常是
py_library 规则。
|
srcs
|
标签列表;默认值为 .py ) 文件的列表。
这包括您已签入的所有代码和所有已生成的源文件。
|
imports
|
字符串列表;默认值为 PYTHONPATH 的导入目录的列表。
需遵循替换 "Make variable" 的规定。这些导入
目录,以及依赖于该规则的所有规则(注意:而非
规则所依赖的规则系统会通过以下方式将每个目录添加到
绝对路径(以 |
srcs_version
|
String;默认值为 srcs 与任一 Python 兼容
2 和/或 Python 3。要实际设置 Python 运行时版本,请使用
python_version 属性
可执行的 Python 规则(py_binary 或 py_test )。
允许的值包括: 请注意,只有可执行规则( 如需获取有关哪些依赖项引入版本要求的诊断信息,
您可以针对目标运行 bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt 的文件,用于提供信息
您的目标需要一个 Python 版本或另一个版本的原因。请注意,即使
由于版本冲突,给定目标未能构建。
|
py_test
<ph type="x-smartling-placeholder"></ph> 查看规则来源py_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, imports, legacy_create_init, licenses, local, main, python_version, restricted_to, shard_count, size, srcs_version, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
py_test()
规则可编译测试。测试是二进制封装容器
一些测试代码。
示例
py_test( name = "runtest_test", srcs = ["runtest_test.py"], deps = [ "//path/to/a/py/library", ], )
您还可以指定主模块:
py_test( name = "runtest_test", srcs = [ "runtest_main.py", "runtest_lib.py", ], main = "runtest_main.py", )
参数
属性 | |
---|---|
name |
姓名;必需 此目标的唯一名称。 |
deps
|
标签列表;默认值为 deps 的一般评论:
<ph type="x-smartling-placeholder"></ph>
大多数构建规则定义的典型属性。
这些通常是
py_library 规则。
|
srcs
|
标签列表;必需 为创建目标而处理的源 (.py ) 文件的列表。
这包括您已签入的所有代码和所有已生成的源文件。库目标
而属于 deps ,而运行时所需的其他二进制文件则属于
data 。
|
imports
|
字符串列表;默认值为 PYTHONPATH 的导入目录的列表。
需遵循替换 "Make variable" 的规定。这些导入
目录,以及依赖于该规则的所有规则(注意:而非
规则所依赖的规则系统会通过以下方式将每个目录添加到
绝对路径(以 |
legacy_create_init
|
整数;默认值为 --incompatible_default_to_explicit_init_py 。如果为 false,则用户
负责创建(可能为空的)__init__.py 文件,并将其添加到
根据需要 srcs 的 Python 目标。
|
main
|
标签;默认值为 srcs 中列出。如果未指定
改用 name (参见上文)。如果 name
匹配 srcs 中的任何文件名,必须指定 main 。
|
python_version
|
String;不可配置;默认值为 deps )
3.有效值为 "PY2" 和 "PY3" (默认值)。
Python 版本始终会重置(可能默认)为 而无论在命令行中指定的版本,还是通过 依赖于此定位条件的其他更高层级的目标。 如果要对当前的 Python 版本执行 bug 警告:此属性设置 Bazel 构建目标的版本。
但由于 #4815,
生成的桩脚本可能仍会在运行时调用错误的解释器版本。请参阅
这个
解决方法,其中涉及定义一个 |
srcs_version
|
String;默认值为 srcs 与任一 Python 兼容
2 和/或 Python 3。要实际设置 Python 运行时版本,请使用
python_version 属性
可执行的 Python 规则(py_binary 或 py_test )。
允许的值包括: 请注意,只有可执行规则( 如需获取有关哪些依赖项引入版本要求的诊断信息,
您可以针对目标运行 bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt 的文件,用于提供信息
您的目标需要一个 Python 版本或另一个版本的原因。请注意,即使
由于版本冲突,给定目标未能构建。
|
stamp
|
整数;默认值为 |
py_runtime
<ph type="x-smartling-placeholder"></ph> 查看规则来源py_runtime(name, bootstrap_template, compatible_with, coverage_tool, deprecation, distribs, features, files, interpreter, interpreter_path, licenses, python_version, restricted_to, stub_shebang, tags, target_compatible_with, testonly, visibility)
表示用于执行 Python 代码的 Python 运行时。
py_runtime
目标可以表示平台运行时或
build 运行时。平台运行时以已知的
路径,而构建运行时指向充当解释器的可执行目标。在
“口译”或“翻译”指任何能够
运行通过命令行传递的 Python 脚本,并遵循与标准
CPython 解释器。
平台运行时本质上是非封闭的。对目标平台施加了要求 让口译工具位于特定路径。构建运行时不一定是封闭的 具体取决于它是指向已检入的解释器还是用于访问 系统解释器。
示例:
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 |
姓名;必需 此目标的唯一名称。 |
bootstrap_template
|
标签;默认值为 |
coverage_tool
|
标签;默认值为 py_binary 收集代码覆盖率信息
和 py_test 目标。
如果设置,目标必须是生成单个文件,或者是可执行目标。 指向单个文件的路径;如果目标可执行,则为可执行文件的路径; 确定 python 覆盖率工具的入口点。目标及其 启用覆盖率功能后,系统会将 runfiles 添加到 runfile 中。 该工具的入口点必须可通过 Python 解释器(例如
|
files
|
标签列表;默认值为 |
interpreter
|
标签;默认值为 |
interpreter_path
|
String;默认值为 |
python_version
|
String;默认值为 "PY2"
和 "PY3" 。
默认值由 |
stub_shebang
|
String;默认值为 py_binary 目标时使用。
请参阅问题 8685 。 不适用于 Windows。 |