Обновление Xcode сломало gcloud и gsutil

Несколько часов назад я обновил Xcode до последней версии, из-за чего перестали работать команды gcloud и gsutil. Например, за минуту до завершения обновления команда gsutil -m rsync работала нормально.

При написании этого вопроса я заметил, что у меня больше не работает git.

Поскольку я не специалист по Python, может кто-нибудь объяснить мне, что, черт возьми, сейчас произошло? Мне бы не помешала помощь.

python -V вывод равен Python 2.7.16.

python3 -V выход Python 3.9.0.

pip -V выход pip 20.2.3 from /Users/<MY_USER>/Library/Python/2.7/lib/python/site-packages/pip (python 2.7)

pip3 -V выход pip 20.2.3 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)

Вот что я получаю за gcloud help:

Traceback (most recent call last):
  File "/Users/<MY_USER>/gcloud/sdk/lib/gcloud.py", line 104, in <module>
    main()
  File "/Users/<MY_USER>/gcloud/sdk/lib/gcloud.py", line 62, in main
    from googlecloudsdk.core.util import encoding
  File "/Users/<MY_USER>/gcloud/sdk/lib/googlecloudsdk/__init__.py", line 23, in <module>
    from googlecloudsdk.core.util import importing
  File "/Users/<MY_USER>/gcloud/sdk/lib/googlecloudsdk/core/util/importing.py", line 23, in <module>
    import imp
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/imp.py", line 23, in <module>
    from importlib import util
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/util.py", line 2, in <module>
    from . import abc
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/abc.py", line 17, in <module>
    from typing import Protocol, runtime_checkable
  File "/Library/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 "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/re.py", line 124, in <module>
    import enum
  File "/Users/<MY_USER>/gcloud/sdk/lib/third_party/enum/__init__.py", line 26, in <module>
    spec = importlib.util.find_spec('enum')
AttributeError: module 'importlib' has no attribute 'util'

И вот что я получаю за gsutil help:

Traceback (most recent call last):
  File "/Users/<MY_USER>/gcloud/sdk/bin/bootstrapping/gsutil.py", line 13, in <module>
    import bootstrapping
  File "/Users/<MY_USER>/gcloud/sdk/bin/bootstrapping/bootstrapping.py", line 32, in <module>
    import setup  # pylint:disable=g-import-not-at-top
  File "/Users/<MY_USER>/gcloud/sdk/bin/bootstrapping/setup.py", line 57, in <module>
    from googlecloudsdk.core.util import platforms
  File "/Users/<MY_USER>/gcloud/sdk/lib/googlecloudsdk/__init__.py", line 23, in <module>
    from googlecloudsdk.core.util import importing
  File "/Users/<MY_USER>/gcloud/sdk/lib/googlecloudsdk/core/util/importing.py", line 23, in <module>
    import imp
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/imp.py", line 23, in <module>
    from importlib import util
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/util.py", line 2, in <module>
    from . import abc
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/abc.py", line 17, in <module>
    from typing import Protocol, runtime_checkable
  File "/Library/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 "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/re.py", line 124, in <module>
    import enum
  File "/Users/<MY_USER>/gcloud/sdk/lib/third_party/enum/__init__.py", line 26, in <module>
    spec = importlib.util.find_spec('enum')
AttributeError: module 'importlib' has no attribute 'util'

person ronen3    schedule 07.10.2020    source источник


Ответы (1)


Итак, после почти дня бездействия я нашел решение: мне нужно было установить переменную среды с именем CLOUDSDK_PYTHON в /usr/bin/python.

Я отредактировал свой .zprofile и добавил:

export CLOUDSDK_PYTHON="/usr/bin/python"

Я до сих пор понятия не имею, что вызвало это, поэтому я буду рад объяснению, если кто-то захочет потратить время.

person ronen3    schedule 07.10.2020
comment
gcloud пока не поддерживает Python 3.9. См. этот ответ: stackoverflow.com/a/64011263/339052 Python 3.9 является кандидатом на выпуск, и ожидается, что Gcloud SDK не поддержка 3.9, она написана для совместимости с 2.7.x и 3.6 - 3.8. У меня была такая же проблема на Win10 после обновления Python. Похоже, что включенный в gcloud Python не используется по умолчанию, поскольку более новый был первым в PATH. - person apa64; 12.10.2020
comment
Обновление 2020-11-04: теперь поддерживает Python 3.9. Я смог решить проблему, используя это решение. - person B. Bulpett; 04.11.2020