我正在编写一个小型 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,所以我可能忽略了一些明显的东西。
蒂亚,猎户座