如何修复Google Cloud SDK安装时collections模块无Mapping属性的AttributeError?
macOS安装Google Cloud SDK出现
collections.Mapping报错解决方案 报错内容:
Welcome to the Google Cloud SDK! Traceback (most recent call last): File "/Users/kaab/google-cloud-sdk/bin/bootstrapping/install.py", line 12, in <module> import bootstrapping File "/Users/kaab/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 46, in <module> from googlecloudsdk.core.updater import update_manager File "/Users/kaab/google-cloud-sdk/lib/googlecloudsdk/core/updater/update_manager.py", line 39, in <module> from googlecloudsdk.core.console import progress_tracker File "/Users/kaab/google-cloud-sdk/lib/googlecloudsdk/core/console/progress_tracker.py", line 651, in <module> class _BaseStagedProgressTracker(collections.Mapping): AttributeError: module 'collections' has no attribute 'Mapping'
报错原因
该报错由Python版本与旧版Google Cloud SDK不兼容导致:Python 3.10及以上版本将原collections模块下的抽象基类(包含Mapping)全部迁移到了collections.abc子模块,旧版SDK调用已废弃的属性就会触发该异常。
解决方案
方案1:指定兼容Python版本运行安装脚本
- 先通过Homebrew安装Python3.9版本:
brew install python@3.9 - 执行安装命令时指定SDK使用的Python版本:
CLOUDSDK_PYTHON=python3.9 ./google-cloud-sdk/install.sh - 若要永久生效,可将环境变量写入终端配置文件:
执行echo 'export CLOUDSDK_PYTHON=python3.9' >> ~/.zshrc(zsh用户)或echo 'export CLOUDSDK_PYTHON=python3.9' >> ~/.bash_profile(bash用户),重启终端即可。
- 先通过Homebrew安装Python3.9版本:
方案2:直接修改源码适配高版本Python
打开报错提示的文件
/Users/kaab/google-cloud-sdk/lib/googlecloudsdk/core/console/progress_tracker.py,将第651行的collections.Mapping修改为collections.abc.Mapping,保存后重新运行安装程序即可。方案3:重新下载最新版SDK
该兼容问题已在新版Google Cloud SDK中修复,直接下载官方最新安装包重新安装即可避免该报错。
内容的提问来源于stack exchange,提问作者Khan
相关产品推荐
相关产品推荐

