【问题标题】:bazel can't build py_proto_librarybazel 无法构建 py_proto_library
【发布时间】:2025-12-22 04:55:12
【问题描述】:

我的 BUILD 文件很简单,只是

load("@protobuf_bzl//:protobuf.bzl", "py_proto_library")

py_proto_library(
name = "struct_py_pb2",
srcs = ["struct.proto"],
)

但是 bazel 给出了一堆令人费解的错误消息,例如:

$ bazel build google/genomics/v1:all
ERROR: thomaswc//v1/BUILD:22:1: no such package '': BUILD file not found on package path and referenced by '//v1:struct_py_pb2'
ERROR: Analysis of target '//v1:struct_py_pb2' failed; build aborted: no such package '': BUILD file not found on package path
INFO: Elapsed time: 0.581s
FAILED: Build did NOT complete successfully (2 packages loaded)
currently loading: @protobuf_bzl//

不过,我在 github 上看到了使用 bazel 和 py_proto_library 的其他项目,所以我知道这一定是可能的。我需要一些 WORKSPACE 或 .bzl 魔法吗?

【问题讨论】:

标签: python protocol-buffers bazel


【解决方案1】:

经过一番挖掘,我找到了一个解决方法:default_runtimeprotoc 的默认值被搞砸了,所以你需要覆盖它们:

py_proto_library(
    name = "struct_py_pb2",
    srcs = ["struct.proto"],
    default_runtime = "@com_google_protobuf//:protobuf_python",
    protoc = "@com_google_protobuf//:protoc",
)

【讨论】: