如何在Python的googleapis-common-protos中使用原型文件?

时间:2018-11-20 03:21:56

标签: python google-api protocol-buffers

我想使用Python中googleapis/api-common-protos处已经定义的原型文件。例如

syntax = "proto3";

package com.example.service.rev0;

import "google/protobuf/any.proto";
import "google/rpc/code.proto";

message GenericExcInfo {

    google.rpc.Code status_code = 1;

    string name = 2;

    string message = 3;

    repeated string stack_trace_entries = 4;

    string code_filename = 5;

    int32 code_lineno = 6;

    string code_name = 7;

    google.protobuf.Any arbitrary_info = 16;
}

如果安装了python软件包googleapis-common-protos,则相关的python模块(在这种情况下为google.rpc.code_pb2.Code)可用。但是由于未安装任何原始文件,因此出现以下错误。

$ protoc --proto_path=. --python_out=. exc_info.proto
google/rpc/code.proto: File not found.
exc_info.proto: Import "google/rpc/code.proto" was not found or had errors.
exc_info.proto:14:5: "google.rpc.Code" is not defined.

如何在Python中使用这些Google Proto文件?编译时我是否必须git clone进行回购并包含所有原始文件?

1 个答案:

答案 0 :(得分:0)

已解决。我必须克隆它。

https://github.com/googleapis/api-common-protos#using-these-protos

  

如果您使用协议(或其他类似工具)来编译这些文件   自我证明,您可能需要本地副本。克隆这个   存储库到一个方便的位置,并使用--proto_path指定   在计算机上,此存储库的根目录为编译器。