我从两个不同的原型生成模块,它们有一些共同的原型文件名。从 protos-1 ->
python3 -m grpc_tools.protoc --proto_path=p1/protos/ --python_out=. --grpc_python_out=. p1/protos/common/*.proto
python3 -m grpc_tools.protoc --proto_path=p1/protos/ --python_out=. --grpc_python_out=. p1/protos/p1-unique/*.proto
从 protos-2 ->
python3 -m grpc_tools.protoc --proto_path=p2/protos/ --python_out=. --grpc_python_out=. p2/protos/p2-unique/*.proto
python3 -m grpc_tools.protoc --proto_path=p2/protos/ --python_out=. --grpc_python_out=. p2/protos/common/*.proto
对 p1 和 p2 运行上述命令会覆盖common
p1 的生成模块。因此,它在生成的文件中存在问题p1-unique_pb2.py
。(common
模块参考不正确)
然后我尝试在一个单独的文件夹中从 protos-2 生成模块,使用
python3 -m grpc_tools.protoc --proto_path=p2/protos/ --python_out=./abc --grpc_python_out=./abc p2/protos/p2-unique/*.proto
python3 -m grpc_tools.protoc --proto_path=p2/protos/ --python_out=./abc --grpc_python_out=./abc p2/protos/common/*.proto
但进口仍然p2-unique_pb2.py
是绝对的from common import common_pb2 as common_dot_common__pb2
,因此指的是common
由生成的模块protos-1
我尝试了提供的几种解决方案.. https://github.com/grpc/grpc/issues/9575但没有一个有助于解决这个问题。