我正在编写一个小型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时遇到了麻烦。 我见过Why do I see "cannot import name descriptor_pb2" error when using Google Protocol Buffers?, 但是我希望避免添加运行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
另外,我是一个python n00b,所以我可能会忽略一些明显的东西。
TIA, 猎户
答案 0 :(得分:0)
文件__ init __.py是否存在于google / protobuf目录中?
答案 1 :(得分:0)
注释掉descriptor_pb2.py本身中descriptor_pb2.py的导入修复了我的问题。感谢tim mcclarren提出建议!