Fixing Google Cloud CLI Error: "ModuleNotFoundError: No module named 'imp'"
— tools, python, gcloud — 1 min read
I updated the python version recently and it broke Google Cloud CLI (gcloud) on my machine
Upon attempting to use gcloud auth login, you encounter an error:
gcloud components updateTraceback (most recent call last): File "/opt/homebrew/Caskroom/google-cloud-sdk/444.0.0/google-cloud-sdk/lib/gcloud.py", line 132, in <module> main() File "/opt/homebrew/Caskroom/google-cloud-sdk/444.0.0/google-cloud-sdk/lib/gcloud.py", line 90, in main from googlecloudsdk.core.util import encoding File "/opt/homebrew/share/google-cloud-sdk/lib/googlecloudsdk/__init__.py", line 23, in <module> from googlecloudsdk.core.util import importing File "/opt/homebrew/share/google-cloud-sdk/lib/googlecloudsdk/core/util/importing.py", line 23, in <module> import impModuleNotFoundError: No module named 'imp'Upon investigation, it turned out
- Checking the Python version reveals it's
3.12.2. - The
impmodule was removed in Python 3.12, causing the error forgcloud.
python3Python 3.12.2 (main, Feb 6 2024, 20:19:44) [Clang 15.0.0 (clang-1500.1.0.2.5)] on darwinType "help", "copyright", "credits" or "license" for more informationBut I was in a Catch-22 Situation. While the latest gcloud now supports Python 3.12, updating it requires the gcloud components update command, which is unavailable because gcloud is currently broken.
The solution was manually point to Python to version 3.11 and update gcloud components.
Open your .zshrc file (or the appropriate shell configuration file).
Add the following line:
export CLOUDSDK_PYTHON="/opt/homebrew/bin/python3.11"This line sets the environment variable CLOUDSDK_PYTHON to point to your desired Python 3.11 location (replace the path if necessary).
Run source ~/.zshrc (or the appropriate command to source your configuration file).
Now, you can execute gcloud components update to update the gcloud CLI to a version compatible with Python 3.12.
By manually setting the CLOUDSDK_PYTHON environment variable to an older, compatible Python version, you can bypass the initial error and successfully update the Google Cloud CLI to a version working with Python 3.12. Remember to adjust the paths based on your specific installation locations.