Re: [protobuf] Re: How to import protocol buffer definitions from another Python package?

2010-10-26 Thread Kenton Varda
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?

2010-10-26 Thread Sancho
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?

2010-10-26 Thread Sancho
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.