Использование импорта в py_proto_compile из pubref / rules_protobuf завершается неудачно: _pb2.py и pb2_grpc.py не созданы - PullRequest
0 голосов
/ 01 октября 2018

У нас есть 3 прото-файла, которые зависят друг от друга и находятся в пакете //protocol/proto.В основном:

//protocol/
    |__ proto/
        |__ `A.proto` # depends on: `B.proto`, `C.proto`
        |__ `B.proto` # depends on: `C.proto`
        |__ `C.proto`

Внутри A.proto мы объявляем, imports B.proto и imports C.proto, БЕЗ префикса protocol/path к именам файлов.

Для компиляции кода Java (в//protocol/BUILD), мы используем imports, как показано ниже, и правило работает отлично.

java_proto_compile(
  name = "client-java-proto",
  protos = glob(["proto/*.proto"]),
  imports = ["protocol/proto"],
  with_grpc = True,
)

Однако, когда я пытаюсь сделать то же самое для компиляции кода Python (также в //protocol/BUILD),это не работает:

py_proto_compile(
  name = "client-python-proto",
  protos = glob(["proto/*.proto"]),
  imports = ["protocol/proto/"],
  with_grpc = True,
)

bazel build //protocol:client-python-proto возвращает следующую ошибку:

ERROR: ~/protocol/BUILD:31:1: output 'protocol/proto/A_pb2.py' was not created
ERROR: ~/protocol/BUILD:31:1: output 'protocol/proto/A_pb2_grpc.py' was not created
ERROR: ~/protocol/BUILD:31:1: output 'protocol/proto/B.py' was not created
ERROR: ~/protocol/BUILD:31:1: output 'protocol/proto/B_pb2_grpc.py' was not created
ERROR: ~protocol/BUILD:31:1: output 'protocol/proto/C_pb2.py' was not created
ERROR: ~/protocol/BUILD:31:1: output 'protocol/proto/C_pb2_grpc.py' was not created
ERROR: ~/protocol/BUILD:31:1: not all outputs were created or valid
Target //protocol:client-python-proto failed to build

Импорт полного пути к импортированным прото-файлам (например, import protocol/proto/A.proto) исправляет это, нодля нас важно, чтобы мы не добавляли полный путь в качестве префикса.Таким образом, мы пытаемся заставить аргумент imports работать.

У вас есть идея, что может быть причиной и как мы можем обойти это?

1 Ответ

0 голосов
/ 10 октября 2018

Включите префикс пути в ваши операторы импорта

...