Создайте правильный импорт, используя proto c in Python - PullRequest
1 голос
/ 27 февраля 2020

Я использую proto3 в моем python проекте. Все работает хорошо, но когда я генерирую классы из proto, импорт файлов некорректен.

У меня есть такая структура каталогов.

project/endpoints/protos -> image.proto

Я хочу выходные файлы в.

project / endpoints / grp c -> сгенерированные классы из прото-файлов

Я использую эту команду для генерации классы из proto файлов.

python -m grpc.tools.protoc \
    --include_imports \
    --include_source_info \
    --proto_path=project/endpoints/protos \
    --python_out=project/endpoints/grpc \
    --grpc_python_out=project/endpoints/grpc \
    image.proto

Я также пробовал с python3 ...., но с тем же результатом.

он генерирует файлы в project/endpoints/grpc, но проблема в том, что импорт не корректен. Когда я вижу импорт, он выглядит следующим образом.

import image_pb2 as image__pb2

Но так и должно быть.

import project.endpoints.grpc.image_pb2 as image__pb2

Можете ли вы дать мне знать, как создать импорт следующим образом.

1 Ответ

1 голос
/ 13 марта 2020

после долгих исследований

я нашел его здесь

Решение в монетном дворе:

sudo apt-get install 2to3

запустить для корректировки импорта:

2to3 path/of/generated -w -n

, поэтому

import image_pb2

изменится на

from . import image_pb2
...