为不同的Bazel规则使用不同python版本的方法

为不同的Bazel规则使用不同python版本的方法,python,bazel,Python,Bazel,我能够得到一个py_运行时来指向正确的python解释器, 但现在我希望能够将Python3用于我的Bazel规则,将Python2用于为Python2编写的现有Bazel规则。给定下面的py_运行时,如何将其添加到py_库中,使其在python 3上运行,而其他一切都在python 2上运行 py_runtime( name = "python-3.6", files = [], interpreter = "python3interpreter", ) py_run

我能够得到一个py_运行时来指向正确的python解释器, 但现在我希望能够将Python3用于我的Bazel规则,将Python2用于为Python2编写的现有Bazel规则。给定下面的py_运行时,如何将其添加到py_库中,使其在python 3上运行,而其他一切都在python 2上运行

py_runtime(
    name = "python-3.6",
    files = [],
    interpreter = "python3interpreter",
)

py_runtime(
        name = "python-2.7",
        files = [],
        interpreter = "python2interpreter",
    )

py_library(
    name = "foo",
    srcs = ["foo.py"]
)

首先,使用
py_runtime_pair
来定义PY2和PY3工具链。然后请注意,只有
py_binary
附加了
python_version
,而不是库。这是因为库可以与PY2和PY3兼容。尽管对于
py_库
,您必须正确定义
deps
。您必须在
python_version
上使用
select
来选择正确的dep。

FYI,这是Bazel python SIG正在探讨的主题之一: