我正在尝试从可在此处找到的 containerd API .proto 文件生成工作 Python 模块:https ://github.com/containerd/containerd/tree/master/api 。
不幸的是,containerd 自己的 .proto 文件包含诸如 (in api/events/container.proto
) 之类的引用:
import weak "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto";
现在,这个导入实际上位于protobuf/plugin/fieldpath.proto
,而不是 ( vendor/
) github.com/containerd/...
。简单-I ...
在这种情况下不起作用,因为导入使用“github”-绝对路径,而相应的源不在供应商分支内。
vendor/github.com/...
在尝试使用生成的 Python 模块时,简单地复制内部的源代码会导致运行时错误:这是因为现在有相同协议元素的两个单独实例尝试使用相同的协议元素名称向 GRPC 注册,但来自两个不同的 Python模块。因此,GRPC Python 运行时会引发错误并终止。
使用时如何正确解决此问题python3 -m grpc.tools.protoc ...
?