如何解决GAE标准环境导入automl时出现No module named 'google.cloud'报错
问题解决方案
GAE Python 3.8 标准环境属于第二代运行时,不会预装任何Google Cloud生态的客户端依赖,所有运行所需的包都需要完整、正确声明,结合你给出的场景,按以下步骤排查即可:
1. 修正requirements.txt依赖配置
你本地conda环境的google-cloud-automl包默认携带了关联依赖,但是PyPI源的包在GAE的干净环境下不会自动安装google.cloud命名空间的基础依赖,需要手动补充:
- 除了已添加的
google-cloud-automl,额外加入google-cloud-core、google-api-core两个基础包,可指定兼容版本避免依赖冲突,示例配置:
google-cloud-automl==2.11.1 google-cloud-core==2.3.3 google-api-core==2.11.1
2. 排查命名空间冲突
- 不要使用已废弃的顶层
google-cloud包(2018年已停止维护,拆分是为各服务独立包),代码中所有导入语句要明确指向具体服务,例如from google.cloud import automl,不要写通用导入语句import google.cloud。 - 检查项目根目录是否存在名为
google的文件夹或google.py的自定义文件,这类文件会覆盖官方的google.cloud命名空间,直接导致导入失败。
3. 验证部署配置
- 确认
app.yaml配置中没有libraries字段,第二代GAE运行时不支持该字段声明依赖,所有依赖必须通过requirements.txt配置。 - 部署前可在本地新建一个非conda的干净Python虚拟环境,用pip安装requirements.txt内的所有依赖后运行项目测试,如果能复现报错,按照前两步修正直到本地测试正常,再重新部署到GAE即可。
内容的提问来源于stack exchange,提问作者rajesh
相关产品推荐
相关产品推荐

