python协议编译器生成不存在的导入

dsekswqp  于 2023-02-21  发布在  Python
关注(0)|答案(1)|浏览(104)

我对python和protocol buffer非常陌生,我们遇到过一个场景,需要把指标推送到mimir(prometheus),我下载并编译了proto definition(https://github.com/grafana/mimir/blob/main/pkg/mimirpb/mimir.proto),里面有一行代码:

import "github.com/gogo/protobuf/gogoproto/gogo.proto";

编译proto并生成mimir_pb2包后,导入它会抛出ModuleNotFound错误:

python3
>>> import mimir_pb2
>>> ModuleNotFoundError: from github.com.gogo.protobuf.gogoproto import gogo_pb2 as github_dot_com_dot_gogo_dot_protobuf_dot_gogoproto_dot_gogo__pb2
ModuleNotFoundError, Module github not found.

编译mimir.protoc时在mimir_pb2中生成了以下行:
from github.com.gogo.protobuf.gogoproto import gogo_pb2 as github_dot_com_dot_gogo_dot_protobuf_dot_gogoproto_dot_gogo__pb2
以前有人遇到过这个错误吗?我不知道github.com.gogo.protobuf.gogoproto是什么/在哪里,以及如何解决这个问题。

chhqkbe1

chhqkbe11#

我发现了问题。我还必须下载gogo.proto文件并编译它。这创建了gogo_pb2,我在原始类中引用了它。
Python protobuf gRPC generates a dependency that doesn't exist

相关问题