我如何(密封地)将 python
作为(可执行)输入包含到我的 genrule
中?
从概念上讲,我知道以下方法:
似乎还有一些方法可以做到这一点:
示例:
我有一个 python 库:
myproject
- setup.py
- mylibrary
- __init__.py
- myfunction.py
我想用 Bazel 生成一个 pip install
-able 发行版这样我就可以:
pip install <path/to/distribution>
python
>>> from mylibrary.myfunction import helloworld
>>> helloworld()
我在 myproject/WORKSPACE
中添加了一个(空的)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
中?
除非我误解了你的问题,否则这应该只是将实际路径传递给目标 python 可执行文件的问题。我会将 python 可执行文件检查到 third_party
目录中,而不是简单地使用 python
调用你的 genrule 我会传递相对于 WORKSPACE< 的可执行文件的相对路径
。
我是一名优秀的程序员,十分优秀!