python protobufs — избежать шага установки?

Я пишу небольшую утилиту Python, которая будет использоваться умеренно нетехническими пользователями и которая должна взаимодействовать с некоторыми protobufs.

в идеале я хотел бы, чтобы единственными предпосылками для использования этого на локальной машине были:

установлен питон

* have an SVN checkout of the repository
* run a simple bash script to build the local proto .py definitions
* run "python myutility"

у меня проблемы с импортом descriptor_pb2.py, хотя. я видел Почему я вижу, что не могу импортировать ошибку имени descriptor_pb2 при использовании буферов протокола Google?, но хотел бы избежать добавления дополнительных предварительное условие запуска установщика proto SDK. я изменил сценарий bash, чтобы он также генерировал descriptor_pb2.py в локальной иерархии, которая работает для первого уровня импорта из других моих файлов _pb2.py, но похоже, что сам descriptor_pb2.py пытается импортировать descriptor_pb2, но не может найти Это:

    $ python myutility.py
Traceback (most recent call last):
  File "myutility.py", line 4, in <module>
    import protos.myProto_pb2
  File "/myPath/protos/myProto_pb2.py", line 8, in <module>
    from google.protobuf import descriptor_pb2
  File "/myPath/google/protobuf/descriptor_pb2.py", line 8, in <module>
    from google.protobuf import descriptor_pb2
ImportError: cannot import name descriptor_pb2

моя локальная папка выглядит так:

* myutility.py
* google/
  * protobuf/
    * descriptor.py
    * descriptor_pb2.py
* protos
  * myProto_ob2.py

Кроме того, я питон n00b, поэтому, возможно, я упускаю из виду что-то очевидное.

Тиа, Орион


person orion elenzil    schedule 11.01.2011    source источник
comment
странность заключается в том, что descriptor_pb2.py импортирует сам себя. это нормально ?   -  person orion elenzil    schedule 11.01.2011


Ответы (2)


Существует ли файл __ init __.py в каталоге google/protobuf?

person Santiago Alessandri    schedule 11.01.2011
comment
Спасибо за ответ. да, этот файл существует как в google/, так и в google/protobuf/. (проклятое форматирование комментариев не позволяет мне писать двойные символы подчеркивания) - person orion elenzil; 11.01.2011

комментирование импорта descriptor_pb2.py в самом descriptor_pb2.py устранило мою проблему. Спасибо Тиму Маккларену за предложение!

person orion elenzil    schedule 11.01.2011