Overview
タイトルの通りです。
gcloud components update
したら python のバージョン違いで gcloud コマンドが動かなくなったのでその解決方法について記載します。
エラーの内容
Traceback (most recent call last): File "/Users/$UserName/google-cloud-sdk/lib/gcloud.py", line 104, in <module> main() File "/Users/$UserName/google-cloud-sdk/lib/gcloud.py", line 62, in main from googlecloudsdk.core.util import encoding File "/Users/$UserName/google-cloud-sdk/lib/googlecloudsdk/__init__.py", line 23, in <module> from googlecloudsdk.core.util import importing File "/Users/$UserName/google-cloud-sdk/lib/googlecloudsdk/core/util/importing.py", line 23, in <module> import imp File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/imp.py", line 23, in <module> from importlib import util File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/util.py", line 2, in <module> from . import abc File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/abc.py", line 17, in <module> from typing import Protocol, runtime_checkable File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/typing.py", line 26, in <module> import re as stdlib_re # Avoid confusion with the re we export. File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/re.py", line 124, in <module> import enum File "/Users/$UserName/google-cloud-sdk/lib/third_party/enum/__init__.py", line 26, in <module> spec = importlib.util.find_spec('enum') AttributeError: module 'importlib' has no attribute 'util'
要は python 3.9 には Google Cloud SDK は対応してねーよってことらしいです。
対応
どうやら brew を使って python をインストールしていると意図せず裏側で最新の python が最新にあってしまっていたようで( brew upgrade
した時とかの弊害) gcloud コマンドから参照する python のバージョンが最新にあってしまっていました。
これを解決するためにたまたま pyenv
を入れていたいので pyenv 経由で 3.8 をインストールして合わせました。
pyenv install 3.8.0 pyenv global 3.8.0 source .zshrc python --version Python 3.8.0
これで再度 gcloud
コマンドを実行したら正常に動作しました。