我如何(密封地)包含python作为(可执行)输入到我的genrule?
从概念上讲,我知道以下方法:
third_party/pythonrules-go似乎也有几种方法可以这样做:
py_runtimepy_toolchain (目前好像还没有)py_distribution_package (目前好像还没有)genrules.toolsgenrules.toolchains例子:
我有一个 python 库:
myproject
- setup.py
- mylibrary
- __init__.py
- myfunction.py
Run Code Online (Sandbox Code Playgroud)
我想pip install用Bazel制作一个-able 发行版,以便我可以:
pip install <path/to/distribution>
python
>>> from mylibrary.myfunction import helloworld
>>> helloworld()
Run Code Online (Sandbox Code Playgroud)
我添加了一个(空)WORKSPACE文件,myproject/WORKSPACE并遵循了这篇中等文章中的示例:
# 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)"
)
Run Code Online (Sandbox Code Playgroud)
这有效(即产生bazel-genfiles/mylibrary.tar.gz),但我正在炮轰python.
我如何(密封地)包含python作为(可执行)输入到我的genrule?
除非我误解了你的问题,否则这应该只是将实际路径传递给目标 python 可执行文件的问题。我会将 python 可执行文件检查到目录中third_party,而不是简单地使用调用您的 genrule,而是python将相对于该可执行文件的相对路径传递给WORKSPACE.