Google Cloud Functions报错:无法从jwt.exceptions导入InvalidKeyError
问题根因
你遇到的报错是Python包命名冲突导致的:
- 你安装的
jwt==1.2.0和PyJWT==2.1.0是两个完全独立的第三方库,二者都会占用Python环境中的jwt模块命名空间 oauthlib依赖的是PyJWT提供的模块结构,而jwt==1.2.0的模块中不存在InvalidKeyError这个异常类,因此触发导入错误
修复步骤
- 编辑你的
requirements.txt文件,完全删除jwt==1.2.0这一行,仅保留PyJWT==2.1.0即可,不需要同时安装两个库 - 重新部署Cloud Functions时添加清除缓存参数,避免旧依赖残留,使用gcloud命令部署的参考命令如下:
gcloud functions deploy 你的函数名称 \ --trigger-topic 你的PubSub主题名称 \ --runtime python38 \ --clear-cache
- 验证修复效果:可在本地虚拟环境中执行如下操作确认兼容性:
# 先卸载所有相关包 pip uninstall -y jwt PyJWT # 仅安装PyJWT pip install PyJWT==2.1.0 # 测试导入,无报错即正常 import jwt.algorithms from jwt.exceptions import InvalidKeyError
补充说明
你之前单独安装jwt包仍报错的原因是:oauthlib预期使用的是PyJWT的模块结构,jwt这个库本身的实现逻辑就和oauthlib的依赖要求不兼容,无需尝试安装该包。
内容的提问来源于stack exchange,提问作者Beginner
相关产品推荐
相关产品推荐

