Hello everyone,

I have a couple of micro-services, and each has couple of proto files. It's 
common for one micro-service proto file to reference another service proto 
file using import like so:

import "google/protobuf/struct.proto";
import "myService/v1/message.proto";
import "myOtherService/v2/parser.proto";

We use a Gradle script that's responsible on creating the folder structure 
and fetch all proto dependencies from different git repositories. So in the 
example above the Gradle script will output will be a folder named 
`google/protobuff`, `myServicev1/v1` and `myOtherService/v2` - each of the 
folders will hold the proto files needed. Once the folder structure is OK, 
I can use `protoc` to generate the Python code.

Here's where the problem begins. The generated `_pb2` code import modules 
based on the folder structure. So the import inside the `_pb2` file will 
look like so:

from google.protobuf import struct_pb2 as 
google_dot_protobuf_dot_struct__pb2 

That's a relative path import, and it means that in order for my Python 
program to work, the root folder where the Python script running from, 
should have the `google/protobuff` folder for this import to work.Now 
because I have multiple micro-services, I don't appreciated the fact I have 
to add 3 new folders in my main Python project (it's even more painful when 
you create a Pip package). What I was hoping to do is to open a directory 
called `proto`, and add all that directory structure into it - but because 
imports are relative, this won't work. I tried to to play with couple of 
`protoc` options like `PROTO_PATH`, or run `protoc` from a parent 
directory, so the `_pb2` files will get created with a different relative 
path I can work with like so:

from proto.google.protobuf import struct_pb2 as 
google_dot_protobuf_dot_struct__pb2 

But I wasn't able to do so. A dirty option would be adding the `proto` 
folder into my `PYTHONPATH`. It's not pretty, and I'm guessing there is 
probably a simple solution for that I'm missing with `protoc`.

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to