Bản cập nhật Xcode đã phá vỡ gcloud và gsutil

Oct 07 2020

Một vài giờ trước, tôi đã cập nhật Xcode lên phiên bản mới nhất, điều này khiến gcloudvà gsutilcác lệnh ngừng hoạt động. Ví dụ, một phút trước khi cập nhật hoàn tất, lệnh gsutil -m rsyncđã hoạt động tốt.

Trong khi viết câu hỏi này, tôi nhận thấy tôi không còn gitlàm việc nữa.

Vì tôi không phải là một chàng trai Python, ai đó có thể giải thích cho tôi chuyện quái gì đã xảy ra bây giờ không? Tôi rất muốn được giúp đỡ.

python -Vđầu ra là Python 2.7.16.

python3 -Vđầu ra là Python 3.9.0.

pip -V đầu ra là pip 20.2.3 from /Users/<MY_USER>/Library/Python/2.7/lib/python/site-packages/pip (python 2.7)

pip3 -V đầu ra là pip 20.2.3 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)

Đây là những gì tôi nhận được cho 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'

Và đây là những gì tôi nhận được cho 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'

Trả lời

11 ronen3 Oct 07 2020 at 17:02

Vì vậy, sau gần một ngày mà không có gì, tôi tìm thấy một giải pháp: những gì tôi cần làm là thiết lập một biến môi trường được đặt tên CLOUDSDK_PYTHONđể /usr/bin/python.

Tôi đã chỉnh sửa của mình .zprofilevà thêm:

export CLOUDSDK_PYTHON="/usr/bin/python"

Tôi vẫn không biết điều gì đã gây ra nó, vì vậy tôi sẽ rất vui được giải thích nếu ai đó quan tâm dành thời gian.