1

我正在编写一个小型 python 实用程序,它将被中等非技术用户使用,并且需要与一些 protobufs 进行接口。

理想情况下,我希望在本地机器上使用它的唯一先决条件是:

安装了python

* 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时遇到了麻烦。我已经看到为什么我在使用 Google 协议缓冲区时看到“无法导入名称描述符_pb2”错误?,但希望避免添加运行 proto SDK 安装程序的额外先决条件。我已经修改了 bash 脚本以在本地层次结构中生成 descriptor_pb2.py,它适用于从我的其他 _pb2.py 文件导入的第一级,但看起来 descriptor_pb2.py 本身试图导入描述符_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

另外,我是 python n00b,所以我可能忽略了一些明显的东西。

蒂亚,猎户座

4

2 回答 2

0

文件 __ init __.py 是否存在于 google/protobuf 目录中?

于 2011-01-11T02:37:19.247 回答
0

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

于 2011-01-11T21:49:35.463 回答