当我尝试为 protobuf 生成文件时,出现错误 ModuleNotFoundError

use*_*245 5 python protocol-buffers

当我尝试使用命令生成文件时

\n\n

python -m grpc_tools.protoc -I./ --python_out=. --grpc_python_out=. service.proto

\n\n

我收到错误。

\n\n
Traceback:\ntest_client.py:11: in <module>\n    from tests.remote.grpc_wrapper.service_pb2_grpc import TestServiceServicer, add_TestServiceServicer_to_server, \\\nservice_pb2_grpc.py:4: in <module>\n    import service_pb2 as service__pb2\nE   ModuleNotFoundError: No module named \'service_pb2\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

我该如何修复它?我正在重新安装 protobuf 但它对我没有帮助。

\n\n
pip uninstall protobuf\npip install -U protobuf\n
Run Code Online (Sandbox Code Playgroud)\n\n

PS我用conda,我用truing

\n\n
conda install protobuf\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它对我也没有帮助。

\n\n

在此输入图像描述

\n

ECH*_*ECH 10

在本期中,有讨论在 .proto 文件生成时指定这一点。据我所知,目前您有两种选择:

1)将第 4 行更改为.前面(这表示相对导入):

from . import service_pb2 as service__pb2
Run Code Online (Sandbox Code Playgroud)

2) 更改__init__.py“grpc_wrapper”文件夹中的文件以包括:

import os
import sys
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
Run Code Online (Sandbox Code Playgroud)