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

时间:2018-12-26 16:29:42

标签: python protocol-buffers

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

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

我得到错误。

Traceback:
test_client.py:11: in <module>
    from tests.remote.grpc_wrapper.service_pb2_grpc import TestServiceServicer, add_TestServiceServicer_to_server, \
service_pb2_grpc.py:4: in <module>
    import service_pb2 as service__pb2
E   ModuleNotFoundError: No module named 'service_pb2'

我该如何解决?我确实重新安装了protobuf,但对我没有帮助。

pip uninstall protobuf
pip install -U protobuf

P.S。我用conda,我用

conda install protobuf

但这对我也没有帮助。

enter image description here

1 个答案:

答案 0 :(得分:0)

有一种说法是在this issue的.proto文件中在生成时进行指定。据我所知,您目前有两个选择:

1)更改第4行,使.位于前面(这表示相对导入):

from . import service_pb2 as service__pb2

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

import os
import sys
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))