protocol-buffers - 如何使用 grpcio-tools/grpc_tools.protoc 在 proto 文件中进行相对导入

标签 protocol-buffers grpc-python

假设您在 \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/

相关文章:

ssl - 远程实例上的 Python 安全通道 gRPC 'ssl_transport_security.cc:1807] No match found for server name'

python - 从字符串解析 graph_def 时出错

c++ - Protocol Buffer 多态性

c++ - 名为 TYPE_BOOL(c++ 代码)的变量与 ios 宏冲突

python - Protocol Buffers 重复字段

python - gRPC Node Js 客户端 : "Method not found"

protocol-buffers - .proto 文件中的 'option' 关键字是什么意思?

go - 从不同的包导入原始文件会导致 'missing method protoreflect'

c# - AutoMapper 与 Google Protocol Buffers 3 的务实使用

Python grpc-tools 在我安装后立即被声明为丢失