Bazel:为genrule安装python依赖项



我正在写一个Bazel宏,用于上传python车轮到PyPI。为了将.whl文件上传到PyPI,我调用twine作为宏的最后一步。Twine是一个python包,看起来应该单独安装。但是,我希望我的构建是密封的,所以我希望它由构建系统安装,最好不要安装到系统python或可能在用户机器上激活的当前虚拟环境中。有办法吗?我尝试将其指定为我的genrule的依赖项,但它没有deps参数,或者作为我的py_wheel阶段的依赖项,但随后twine仍然不可用于上传阶段。有什么好办法吗?

下面是对所讨论的genrule的调用:

native.genrule(
name = name + "_upload",
srcs = [":" + short_name + "_wheel"],
outs = [short_name + "_twine_upload.log"],
cmd = "twine upload --disable-progress-bar --skip-existing $(SRCS) -u ........",
visibility = ["//visibility:public"],
#        deps = [requirement("twine")]
)

您缺少的是可执行形式的twinerules_python有一个机制:

load("@my_pip_install//:requirements.bzl", "entry_point")
alias(
name = "twine",
actual = entry_point("twine"),
)

现在生成一个"binary"您可以使用bazel run运行或将其传递到genrule()

最新更新