首页 > 解决方案 > 在 Python 中使用 protoc 生成正确的导入

问题描述

proto3在我的python项目中使用。一切正常,但是当我从proto文件导入生成类时不正确。

我有这样的目录结构。

project/endpoints/protos -> image.proto

我想要输出文件。

project/endpoints/grpc -> 从 proto 文件生成的类

我正在使用此命令从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

你能告诉我如何生成这样的导入吗?

标签: pythonprotocol-buffersproto

解决方案


经过大量研究

在这里找到了

薄荷解决方案:

sudo apt-get install 2to3

运行以调整导入:

2to3 path/of/generated -w -n

所以

import image_pb2

将更改为

from . import image_pb2

推荐阅读