У меня есть структуру каталогов, как это:Как импортировать определения буфера протокола из другого пакета Python?
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
Корневой каталог находится в моем $PYTHONPATH
.
Я строю root/sift/sift_descriptors_pb2.py
используя protoc --python_out=./ sift_descriptors.proto
Я строю root/project/filtered_descriptors_pb2.py
используя /cs/public/lib/pkg/protobuf/bin/protoc --proto_path=../sift --proto_path=./ --python_out=./ filtered_descriptors.proto
В filtered_descriptors.proto
я использую import "sift_descriptors.proto"
Проблема заключается в том, что в filtered_descriptors_pb2.py
(производство protoc), есть утверждение, что просто делает этот голый импорт: import sift_descriptors_pb2
, без ссылки через имя модуля, если потребуется: from sift import sift_descriptors_pb2
.
Что я делаю неправильно?
Говоря с поддерживающими протокольными буферами, --proto_path должен указывать на корень иерархии пакетов, и весь импорт должен быть полностью квалифицирован. Не очень хорошо описаны в документации, но они исправят это :) – 2010-10-27 07:10:39