创建protocol buffer时如何正确导入?

问题描述 投票:0回答:0

我对协议缓冲区和Python比较陌生,所以我偶然发现了下面描述的问题。 (我在这个问题上做了很多研究,但没有找到解决方案)

我的代码的相关层次结构:

.
└── MainFolder
    ├── main.py
    ├── create_python_proto.bat
    ├── protos
    │   └── foo.proto
    ├── client
    │   ├── protos
    │   │   ├ __init__.py
    │   │   ├ foo_pb2.py
    │   │   └ foo_pb2_grpc.py
    │   ├── __init__.py
    │   ├── client.py
    │   └── etc...
    └── server
        ├── ...

(main.py是我的起点)

当我使用 protoc 从 protobuf 创建代码时,文件按照我想要的方式正确放置。 但是我的“foo_pb2_grpc.py”内部自动生成的代码不正确,正是“foo_pb2.py”的导入。

实际状态:

from protos import foo_pb2 as protos_dot_foo__pb2

目标状态:

from ..protos import foo_pb2 as protos_dot_foo__pb2

我通过“create_python_proto.bat”创建原型文件,命令如下:

setlocal

python -m grpc_tools.protoc -I . --python_out=.\client --grpc_python_out=.\client protos\foo.proto

endlocal

因此,当我从“main.py”运行程序时,我在“foo_pb2_grpc.py”处收到“ImportError”,其中显示:

“无法从‘protos’(未知位置)导入名称‘foo_pb2’”

我做错了什么?我正在拼命寻找解决方案,但我就是找不到......

感谢您提前帮助我!

ps: '.\MainFolde 中给出了'_ _ init _ _.py'

python protocol-buffers grpc python-import protoc
© www.soinside.com 2019 - 2024. All rights reserved.