Python使用grpc时报module 'grpc' has no attribute 'insecure_channel'错误
问题原因及解决方案
核心原因
出现该报错本质是Python导入的grpc模块并非你安装的官方grpcio库,常见触发场景如下:
- 当前工作目录或Python导入路径下存在和第三方库重名的
grpc.py文件/grpc.pyc缓存文件,Python导入时优先加载了本地自定义文件,该文件自然没有insecure_channel、aio等官方属性 - 依赖安装环境不匹配:运行代码用的Python环境和你安装
grpcio的Python环境不是同一个,运行环境没有正确安装grpcio库 - 小概率为
grpcio安装过程损坏,缺失核心模块
解决步骤
- 首先排查重名文件:检查当前代码目录下是否有
grpc.py、grpc.pyc文件,以及__pycache__目录下的grpc相关缓存,确认存在后将自定义的grpc.py重命名(比如改为grpc_demo.py),并删除所有缓存文件后重新运行代码 - 验证导入的grpc库路径是否正确:在运行代码的容器终端执行以下命令
正常输出应该是Python第三方库目录下的路径,形如python3 -c "import grpc; print(grpc.__file__)"/usr/local/lib/python3.8/site-packages/grpc/__init__.py,如果输出是你本地自定义文件的路径,即可确认是重名问题 - 若路径正常仍报错,重装相关依赖:执行以下命令卸载后重新安装对应版本依赖
pip3 uninstall -y grpcio grpcio-tools protobuf pip3 install protobuf==3.18.0 grpcio==1.41.0 grpcio-tools==1.41.0 - 额外提示:你现有代码中的
import class属于语法错误,class是Python保留关键字,你需要改为导入生成的protobuf代码文件import class_pb2和import class_pb2_grpc,否则修复grpc问题后仍会报错。
内容的提问来源于stack exchange,提问作者mrc
相关产品推荐
相关产品推荐

