使用从谷歌协议缓冲区生成的python代码时遇到问题

时间:2015-01-21 15:36:01

标签: python protocol-buffers importerror gtfs

当我尝试运行gtfs_realtime_pb2.py(通过google协议缓冲区运行gtfs-realtime.proto生成的python代码)时出现以下错误:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    from google.protobuf import descriptor
ImportError: No module named 'google'

这是我遇到问题的具体代码的链接: https://github.com/mattwigway/gtfsrdb

安装google协议缓冲区的链接:
https://developers.google.com/protocol-buffers/

我很确定我已经正确安装了缓冲区,为什么它无法找到这个模块呢?

1 个答案:

答案 0 :(得分:0)

协议缓冲区中包含 descriptor.proto ;这个proto的python代码应该作为安装过程的一部分生成。

您正在使用的协议缓冲区使用descriptor.proto,因此需要通过--proto_path =参数包含它所在的目录(请参阅Importing "google/protobuf/descriptor.proto" in java protocol buffers

对于窗口系统,安装目录将放在您放置的位置;对于* nix,它可能是answer taken from

    /usr/include/descriptor.proto 
or 
    /usr/local/include/descriptor.proto 

即。对于java你会做类似

的事情
protoc addressbookSD.proto --java_out=./ --proto_path=./ --proto_path=<protobuf-install-directory>/src

其中&lt; protobuf-install-directory&gt; 是协议缓冲区安装目录。关键点是descriptor.proto在

<protobuf-install-directory>\src\google\protobuf