gpt4 book ai didi

python - Bazel:从 py_library 中的 python 文件创建 py_binary

转载 作者:行者123 更新时间:2023-11-28 17:28:25 25 4
gpt4 key购买 nike

Bazel 构建系统的新功能。

我想从 py_library 中的一个文件创建一个 py_binary,该文件是从 http_archive 创建的。

目前我有:

工作空间:

new_http_archive(
name = "cpplint_archive",
url = "https://pypi.python.org/packages/source/c/cpplint/cpplint-1.2.2.tar.gz",
sha256 = "b2979ff630299293f23c52096e408f2b359e2e26cb5cdf24aed4ce53e4293468",
build_file = "cpplint.BUILD",
strip_prefix = "cpplint-1.2.2"
)

cpplint.BUILD:

py_library(
name = "cpplint",
srcs = glob(["*.py"]),
visibility = ['//visibility:public']
)

src/BUILD:

py_binary(
name = "lint",
main = ":cpplint/cpplint.py",
srcs = [":cpplint/cpplint.py"],
deps = [
"@cpplint_archive//:cpplint"
]
)

srcs 和 main 中的路径是错误的,当我运行 bazel run src/lint 时给出“no such package 'cpplint/cpplint.py'”。我不知道如何引用库中包含的文件。

最佳答案

您可以将 py_binary 规则直接放入 cpplint.BUILD 中:

py_binary(
name = "cpplint",
srcs = ["cpplint.py"],
)

然后像这样构建它:

$ bazel build @cpplint_archive//:cpplint
INFO: Found 1 target...
Target @cpplint_archive//:cpplint up-to-date:
bazel-bin/external/cpplint_archive/cpplint
INFO: Elapsed time: 2.327s, Critical Path: 0.01s

如果您确实希望 py_binary 规则位于主存储库中,您可以这样做:

cpplint.BUILD:

exports_files(["cpplint.py"])

构建:

py_binary(
name = "cpplint",
srcs = ["@cpplint_archive//:cpplint.py"],
)

但是从其他包中提取文件通常不太好。

关于python - Bazel:从 py_library 中的 python 文件创建 py_binary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36624426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com