Re: [protobuf] Re: How to import protocol buffer definitions from another Python package?
Right, --proto_path should always point at the "root" of your source tree, and all imports should be fully-qualified. Probably the documentation for "import" in the language guide should include a bit more text on this, as it comes up a lot. If you file a bug I'll update it when I get time. Thanks for offering to help, BTW. Unfortunately our documentation is not in a repository that can easily be edited from the outside. This was a mistake I made when setting up the project, but oh well... On Tue, Oct 26, 2010 at 1:10 PM, Sancho wrote: > Nevermind! I fixed it... > > The solution was to use import "sift/sift_descriptors.proto" in > filtered_descriptors.proto, and then point protoc to --proto_path=../ > instead of --proto_path=../sift. > Then, protoc generates python code that does the import as import > sift.sift_descriptors_pb2. > > This isn't explained well in the documentation. How can I help write > something? > > On Oct 26, 1:03 pm, Sancho wrote: > > Sorry, transcription error... I meant "import sift_descriptors_pb2" > > where I wrote "import sift_descriptors_pb2.py" both times. > > > > On Oct 26, 12:58 pm, Sancho wrote: > > > > > > > > > I have my directory structure like this: > > > > > root/ > > > sift/ > > > __init__.py > > > sift_descriptors.proto > > > sift_descriptors_pb2.py > > > project/ > > > __init__.py > > > filtered_descriptors.proto > > > filtered_descriptors_pb2.py > > > filtered_descriptors_test.py > > > The root directory is in my $PYTHONPATH. > > > > > I build root/sift/sift_descriptors_pb2.py using protoc --python_out=./ > > > sift_descriptors.proto > > > > > I build root/project/filtered_descriptors_pb2.py using /cs/public/lib/ > > > pkg/protobuf/bin/protoc --proto_path=../sift --proto_path=./ -- > > > python_out=./ filtered_descriptors.proto > > > > > In filtered_descriptors.proto, I use import "sift_descriptors.proto" > > > > > The problem is that in filtered_descriptors_pb2.py, there's a > > > statement that just does this bare import: import > > > sift_descriptors_pb2.py, without reference via the module name as > > > would be needed: from sift import sift_descriptors_pb2.py. > > > > > What am I doing wrong? > > -- > You received this message because you are subscribed to the Google Groups > "Protocol Buffers" group. > To post to this group, send email to proto...@googlegroups.com. > To unsubscribe from this group, send email to > protobuf+unsubscr...@googlegroups.com > . > For more options, visit this group at > http://groups.google.com/group/protobuf?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to proto...@googlegroups.com. To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.
[protobuf] Re: How to import protocol buffer definitions from another Python package?
Nevermind! I fixed it... The solution was to use import "sift/sift_descriptors.proto" in filtered_descriptors.proto, and then point protoc to --proto_path=../ instead of --proto_path=../sift. Then, protoc generates python code that does the import as import sift.sift_descriptors_pb2. This isn't explained well in the documentation. How can I help write something? On Oct 26, 1:03 pm, Sancho wrote: > Sorry, transcription error... I meant "import sift_descriptors_pb2" > where I wrote "import sift_descriptors_pb2.py" both times. > > On Oct 26, 12:58 pm, Sancho wrote: > > > > > I have my directory structure like this: > > > root/ > > sift/ > > __init__.py > > sift_descriptors.proto > > sift_descriptors_pb2.py > > project/ > > __init__.py > > filtered_descriptors.proto > > filtered_descriptors_pb2.py > > filtered_descriptors_test.py > > The root directory is in my $PYTHONPATH. > > > I build root/sift/sift_descriptors_pb2.py using protoc --python_out=./ > > sift_descriptors.proto > > > I build root/project/filtered_descriptors_pb2.py using /cs/public/lib/ > > pkg/protobuf/bin/protoc --proto_path=../sift --proto_path=./ -- > > python_out=./ filtered_descriptors.proto > > > In filtered_descriptors.proto, I use import "sift_descriptors.proto" > > > The problem is that in filtered_descriptors_pb2.py, there's a > > statement that just does this bare import: import > > sift_descriptors_pb2.py, without reference via the module name as > > would be needed: from sift import sift_descriptors_pb2.py. > > > What am I doing wrong? -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to proto...@googlegroups.com. To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.
[protobuf] Re: How to import protocol buffer definitions from another Python package?
Sorry, transcription error... I meant "import sift_descriptors_pb2" where I wrote "import sift_descriptors_pb2.py" both times. On Oct 26, 12:58 pm, Sancho wrote: > I have my directory structure like this: > > root/ > sift/ > __init__.py > sift_descriptors.proto > sift_descriptors_pb2.py > project/ > __init__.py > filtered_descriptors.proto > filtered_descriptors_pb2.py > filtered_descriptors_test.py > The root directory is in my $PYTHONPATH. > > I build root/sift/sift_descriptors_pb2.py using protoc --python_out=./ > sift_descriptors.proto > > I build root/project/filtered_descriptors_pb2.py using /cs/public/lib/ > pkg/protobuf/bin/protoc --proto_path=../sift --proto_path=./ -- > python_out=./ filtered_descriptors.proto > > In filtered_descriptors.proto, I use import "sift_descriptors.proto" > > The problem is that in filtered_descriptors_pb2.py, there's a > statement that just does this bare import: import > sift_descriptors_pb2.py, without reference via the module name as > would be needed: from sift import sift_descriptors_pb2.py. > > What am I doing wrong? -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to proto...@googlegroups.com. To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.