如何(密封)在Bazel中包含Python解释器以构建Python库(sdist)

时间:2018-09-07 18:47:14

标签: python bazel

我如何(密封地)将python作为genrule的(可执行)输入?

从概念上讲,我知道以下方法:

似乎还有几种方法可以这样做:


示例:

我有一个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的(可执行)输入?

1 个答案:

答案 0 :(得分:1)

除非我对您的问题有误解,否则这应该只是将实际路径传递给目标python可执行文件的问题。我会将python可执行文件检查到third_party目录中,而不是简单地使用python来调用您的风格,而是将相对路径传递给相对于WORKSPACE的可执行文件。