我正在写一个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")]
)
您缺少的是可执行形式的twine
。rules_python
有一个机制:
load("@my_pip_install//:requirements.bzl", "entry_point")
alias(
name = "twine",
actual = entry_point("twine"),
)
现在生成一个"binary"您可以使用bazel run
运行或将其传递到genrule()
。