Я генерирую модули из двух разных протоколов, у которых есть общие имена файлов proto. Из протос-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
Из протос-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, но ни один из них не помог в решении этой проблемы.