I have two protobuf messages located in separate directories. One message is nested in the other. Basically, something like this:
import "msg1.proto";
message Message2 {
optional Message1 message1 = 1;
}
Where the files are as follows:
dir
+---dir1
| msg1.proto
|
\---dir2
| msg2.proto
The auto-generated file msg2_pb.py contains the line import msg1_pb. The problem is that msg1_pb.py and msg2_pb.py are located in different directories, thus the import fails.
Is there some flag I can add so that msg1_pb and msg2_pb will compile in such a way that they'll be more aware of the directory structure?
Currently, when compiling msg2, my command-line looks like this:
protoc.exe --proto_path=dir1 --python_out=out msg2.proto
Roy,
You may have found the solution already! Anyway, here goes...
I have used two methods to resolve this, either should work for you:
Add the folder containing the generated protobuf classes to sys.path
sys.path.append('/.../dir/out')
Edit the generated protobuf classes to use absolute paths for import
# msg2_pb.py
from out import msg1_pb
I prefer the 2nd approach myself (avoids messing with sys.path; protobuf classes are re-generated rarely if ever).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With