【发布时间】:2020-11-17 06:48:01
【问题描述】:
例如在java项目中
myapp
└── src
└── main
└── proto
└── com
└── abc
└── myapp
└── api
├── common.proto
└── myapp.proto
$ cat myapp/src/main/proto/com/abc/myapp/api/common.proto
syntax = "proto3";
package com.abc.myapp.api;
message Metadata {
string key = 1;
}
$ cat myapp/src/main/proto/com/abc/myapp/api/myapp.proto
syntax = "proto3";
import "com/abc/myapp/api/common.proto";
package com.abc.myapp.api;
message Request {
string name = 1;
Metadata metada = 2;
}
将 protos 编译成 python 模块时
$ protoc -I myapp/src/main/proto --python_out=tmp com/abc/myapp/api/common.proto
$ protoc -I myapp/src/main/proto --python_out=tmp com/abc/myapp/api/myapp.proto
输出结构是这样的
tmp
└── com
└── abc
└── myapp
└── api
├── common_pb2.py
└── myapp_pb2.py
而在myapp_pb2.py里面,import是非常嵌套和like的
from com.abc.myapp.api import common_pb2 as com_dot_abc_dot_myapp_dot_api_dot_common__pb2
有没有推荐的做法来使编译的 pb2 文件结构平坦?例如
tmp
├── common_pb2.py
└── myapp_pb2.py
并且myapp_pb2.py 具有类似的导入
from . import common_pb2 as ...
而不是
from com.abc.myapp.api import common_pb2 com.abc.myapp.api ...
【问题讨论】:
标签: java python protocol-buffers proto