假设您在 \interaces\crane
文件夹下有名为 crane
的服务的依赖外部接口(interface),如下所示
--interfaces
-----crane
------- crane.proto
------- vehicle.proto
在crane.proto(外部原型(prototype))中,您有对车辆原型(prototype)的相对引用
import crane/vehicle.proto
....
如何使用 grpc_tools 正确生成 python 绑定(bind)的原型(prototype)缓冲区?
使用下面的代码会在crane.proto中出现错误,找不到vehicles.proto
$(PYTHON) -m grpc_tools.protoc -I ./interfaces/crane --python_out=./my_proj/generated -- \
grpc_python_out=./my_proj/generated crane.proto
最佳答案
您可以像下面这样使用 https://github.com/grpc/grpc/issues/9575#issuecomment-293934506
build:
$(MKDIR) -p myproj/generated
touch myproj/generated/__init__.py
$(MKDIR) -p ndn_objtrack/myproj/crane
touch myproj/generated/crane/__init__.py
$(PYTHON) -m grpc_tools.protoc -I ./interfaces/ --python_out=./my_proj/generated -- \
grpc_python_out=./my_proj/generated crane/crane.proto
并在您的 Python 文件中使用
import grpc
from generated.myproj import crane_pb2
from generated.myproj import crane_pb2_grpc
关于protocol-buffers - 如何使用 grpcio-tools/grpc_tools.protoc 在 proto 文件中进行相对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63901717/