我如何(密封地)将python
作为genrule
的(可执行)输入?
从概念上讲,我知道以下方法:
third_party/python
rules-go
似乎还有几种方法可以这样做:
py_runtime
py_toolchain
(似乎尚不可用)py_distribution_package
(似乎尚不可用)genrules.tools
genrules.toolchains
示例:
我有一个python库:
myproject
- setup.py
- mylibrary
- __init__.py
- myfunction.py
我想用Bazel生成pip install
的分布,以便我可以做:
pip install <path/to/distribution>
python
>>> from mylibrary.myfunction import helloworld
>>> helloworld()
我在WORKSPACE
处添加了一个(空)myproject/WORKSPACE
文件,并按照this medium article中的示例进行操作:
# myproject/BUILD
genrule(
name = "mylibrary_sdist",
srcs = glob(["**/*.py"]),
outs = ["mylibrary.tar.gz"],
cmd = "python setup.py sdist && mv dist/mylibrary*.tar.gz $(location mylibrary.tar.gz)"
)
这有效(即产生bazel-genfiles/mylibrary.tar.gz
),但是我要介绍python
。
我如何(密封地)将python
作为genrule
的(可执行)输入?
答案 0 :(得分:1)
除非我对您的问题有误解,否则这应该只是将实际路径传递给目标python可执行文件的问题。我会将python可执行文件检查到third_party
目录中,而不是简单地使用python
来调用您的风格,而是将相对路径传递给相对于WORKSPACE
的可执行文件。