Xcode更新破坏了gcloud和gsutil。

6
几小时前,我更新了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//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'
1个回答

15

差不多过了一整天,我终于找到了解决方案:我需要设置一个名为CLOUDSDK_PYTHON的环境变量,并将其值设置为/usr/bin/python

然后我编辑了我的.zprofile文件,加入以下内容:

export CLOUDSDK_PYTHON="/usr/bin/python"

我仍然不知道是什么原因导致的,如果有人愿意花时间解释一下,我会很感激。


1
gcloud似乎还不支持Python 3.9。请参考此答案:https://dev59.com/4lIG5IYBdhLWcg3wkh8y#64011263 “Python 3.9正在发布候选版本,预计Gcloud SDK不支持3.9,它是为与2.7.x和3.6-3.8兼容而编写的。”在我更新Python后,我在Win10上遇到了同样的问题。看起来gcloud包含的Python不是默认使用的,因为新版本首先出现在PATH中。 - apa64
1
更新于2020年11月4日:现在支持Python 3.9。我能够使用这个解决方案修复了问题。 - B. Bulpett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接