2011-01-11 87 views
1

我正在写一个小型的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,寿。 我见过Why do I see "cannot import name descriptor_pb2" error when using Google Protocol Buffers?, 但希望避免添加运行proto SDK安装程序的其他先决条件。 我修改了bash脚本,以便在本地heirarchy中生成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,因此有可能我俯瞰东西明显。

TIA, 猎户座

+0

奇怪似乎是descriptor_pb2.py自我导入。这是正常的吗? – 2011-01-11 20:34:44

回答

0

注释掉descriptor_pb2.py中的descriptor_pb2.py导入本身解决了我的问题。感谢蒂姆mcclarren建议!

0

是否在谷歌/ protobuf的目录中的文件__初始化__.py存在吗?

+0

感谢您的回复。是的,该文件存在于google /和google/protobuf /中。 (沉默的注释格式不会让我编写双下划线) – 2011-01-11 18:41:31