Как импортировать определения буфера протокола из другого пакета Python? - PullRequest
0 голосов
/ 26 октября 2010

Моя структура каталогов выглядит следующим образом:

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 (создан протоколом) есть утверждение, чтопросто выполняет этот простой импорт: import sift_descriptors_pb2, без ссылки через имя модуля, как было бы необходимо: from sift import sift_descriptors_pb2.

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 27 октября 2010

Я исправил это!

Решение было использовать import "sift/sift_descriptors.proto" в filtered_descriptors.proto, а затем указать protoc на --proto_path=../ вместо --proto_path=../sift.

Тогда,Protoc генерирует код Python, который выполняет импорт как import sift.sift_descriptors_pb2.

1 голос
/ 26 октября 2010

Вы не добавляете .py в оператор импорта: "из sift import sift_descriptors_pb2"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...