本地测试Azure函数遇cygrpc导入错误,求其他解决办法
重装grpcio及配套工具,指定兼容版本:
先卸载现有grpc相关包:pip uninstall -y grpcio grpcio-tools grpcio-status
然后安装和Python3.9适配的稳定版本:pip install grpcio==1.48.2 grpcio-tools==1.48.2 grpcio-status==1.48.2
这个版本和Python3.9的兼容性经过验证,大概率能解决依赖不匹配问题。清空并重建项目虚拟环境:
删除项目根目录下的.venv文件夹,重新创建虚拟环境:python -m venv .venv
激活环境后,重新安装requirements.txt里的所有依赖:pip install -r requirements.txt检查grpc核心文件是否缺失:
用pip show grpcio找到grpcio的安装路径,进入grpc/_cython目录,确认是否存在cygrpc.cp39-*.so(Linux/macOS)或cygrpc.cp39-*.pyd(Windows)文件。如果找不到,重装时加--no-cache-dir参数跳过缓存:pip install grpcio==1.48.2 --no-cache-dir禁用grpc的fork支持:
运行函数前先设置环境变量,Windows命令行执行set GRPC_ENABLE_FORK_SUPPORT=0,Linux/macOS执行export GRPC_ENABLE_FORK_SUPPORT=0,再启动函数func start排查环境冲突:
确认当前终端激活的是项目对应的Python3.9虚拟环境,用python --version和pip --version检查版本是否匹配,避免系统全局Python的包干扰。
内容的提问来源于stack exchange,提问作者howlieT

