Почему я не могу использовать protoc генерировать объект Python3, который имеет поле Any type через --python3_out, работает только --python_out - PullRequest
0 голосов
/ 01 ноября 2019

Я создал файл прото-файла RpcCmd.proto и определил одно поле с типом google.protobuf.Any, когда я попытался сгенерировать объектный файл Python3 с помощью cmd protoc --python3_out=./gen RpcCmd.proto, он завершился ошибкой

Traceback (most recent call last):
  File "/usr/local/bin/protoc-gen-python3", line 36, in <module>
    compiler = Compiler(desc_map[file_name], top_level_elements)
  File "/usr/local/lib/python3.7/site-packages/protobuf3/compiler/__init__.py", line 54, in __init__
    self.process_message(message)
  File "/usr/local/lib/python3.7/site-packages/protobuf3/compiler/__init__.py", line 104, in process_message
    self.process_field(message.name, field, embedded)
  File "/usr/local/lib/python3.7/site-packages/protobuf3/compiler/__init__.py", line 148, in process_field
    file_to_import = splitext(self.__tle_map[top_level_name])[0].replace('/', '.')
KeyError: 'google'
--python3_out: protoc-gen-python3: Plugin failed with status code 1.

Но, если я набрал с помощью cmd protoc --python_out=. RpcCmd.proto это удалось

Я также попытался --java_out работал без ошибок.

syntax = "proto3";
import "google/protobuf/any.proto";

message RpcCmd {
    google.protobuf.Any message = 1;
    string randomKey = 2;
}

Можно ли использовать тип Any с --python3_out

...