【问题标题】:Generate correct import using protoc in Python在 Python 中使用 protoc 生成正确的导入
【发布时间】:2020-02-27 06:34:30
【问题描述】:

我在我的python 项目中使用proto3。一切正常,但是当我从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 它看起来像。

import image_pb2 as image__pb2

但应该是这样的。

import project.endpoints.grpc.image_pb2 as image__pb2

请告诉我如何生成这样的导入。

【问题讨论】:

    标签: python protocol-buffers proto


    【解决方案1】:

    经过大量研究

    我找到了 in here

    薄荷解决方案:

    sudo apt-get install 2to3
    

    运行调整导入:

    2to3 path/of/generated -w -n
    

    所以

    import image_pb2
    

    会变成

    from . import image_pb2
    

    【讨论】:

      【解决方案2】:

      如果您需要:

      from project.endpoints.grpc import image_pb2 as image__pb2
      

      你应该把这个写在 proto 文件中:

      import "project/endpoints/grpc/image.proto"
      

      然后将当前目录或--proto_path设置为“项目”的父级。

      【讨论】:

        猜你喜欢
        • 2021-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多