Can you please include the runtime errors you're encountering? On Wednesday, December 9, 2020 at 11:39:45 AM UTC-8 [email protected] wrote:
> The containerd project <https://github.com/containerd/containerd> doesn't > publish a Python package for its containerd gRPC-based API, so I want to > generate Python modules for it myself. For API version 1.3 of containerd, > the .proto files can be found in > https://github.com/containerd/containerd/tree/release/1.3/api. > Unfortunately, I'm hitting two road blocks when trying to generate Python > modules from the API .proto files and when to run them. > > For example, the some of the containerd API .proto files reference > protobuf plugin .proto files using an (for lack of a better term on my > side) absolute import path: api/events/container.proto > <https://github.com/containerd/containerd/blob/release/1.3/api/events/container.proto> > does > an: > > import weak " > github.com/containerd/containerd/protobuf/plugin/fieldpath.proto"; > > However, the Python grpc compiler always wants to resolve such references > in the local file system and containerd's source have > ./protobuf/plugin/fieldpath.proto > <https://github.com/containerd/containerd/blob/release/1.3/protobuf/plugin/fieldpath.proto> > -- > so this won't ever resolve correctly (using -I ...), because it lacks the > github.lcom/containerd/containerd path elements. Please note that the > Python grpc protocol compiler resolves such import paths in form of > chopping down the full import path into parts and then searching its -I > ... include directories. > > Trying the lazy route by simply copying over these sources into > inside vendor/github.com/... inside the containerd source tree will later > cause *runtime errors *when trying to use the generated Python modules: > this is because the grpc compiler considers the same containerd API .proto > file in two locations (paths) to be separate instances. In consequence we > get duplicate modules which unfortunately now try to register with grpc for > the same protocol element names. Consequently, the gRPC Python runtime thus > throws an error and terminates. > > How can I correctly get this resolved when using python3 -m > grpc.tools.protoc ...? What am I missing here or getting wrong? > -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/ce257795-7a29-4bdb-8bc9-57538c00eb33n%40googlegroups.com.
