AttributeError: 模块 'importlib' 没有属性 'util'

新手上路,请多包涵

我刚刚从 Fedora 32 升级到 Fedora 33(Python 3.9 附带)。从那时起 gcloud 命令停止工作:

 [guy@Gandalf32 ~]$ gcloud
Error processing line 3 of /home/guy/.local/lib/python3.9/site-packages/XStatic-1.0.2-py3.9-nspkg.pth:

  Traceback (most recent call last):
    File "/usr/lib64/python3.9/site.py", line 169, in addpackage
      exec(line)
    File "<string>", line 1, in <module>
    File "<frozen importlib._bootstrap>", line 562, in module_from_spec
  AttributeError: 'NoneType' object has no attribute 'loader'

Remainder of file ignored
Traceback (most recent call last):
  File "/usr/lib64/google-cloud-sdk/lib/gcloud.py", line 104, in <module>
    main()
  File "/usr/lib64/google-cloud-sdk/lib/gcloud.py", line 62, in main
    from googlecloudsdk.core.util import encoding
  File "/usr/lib64/google-cloud-sdk/lib/googlecloudsdk/__init__.py", line 23, in <module>
    from googlecloudsdk.core.util import importing
  File "/usr/lib64/google-cloud-sdk/lib/googlecloudsdk/core/util/importing.py", line 23, in <module>
    import imp
  File "/usr/lib64/python3.9/imp.py", line 23, in <module>
    from importlib import util
  File "/usr/lib64/python3.9/importlib/util.py", line 2, in <module>
    from . import abc
  File "/usr/lib64/python3.9/importlib/abc.py", line 17, in <module>
    from typing import Protocol, runtime_checkable
  File "/usr/lib64/python3.9/typing.py", line 26, in <module>
    import re as stdlib_re  # Avoid confusion with the re we export.
  File "/usr/lib64/python3.9/re.py", line 124, in <module>
    import enum
  File "/usr/lib64/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'

原文由 Guy Carmin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

从 GCP 支持更新

GCP支持提到 新版本 318.0.0 发布于 2020.11.10 应该支持python 3.9

我将我的 gcloud sdk 更新为 318.0.0 现在看起来支持 python 3.9.0。

要解决此问题,请运行

gcloud components update

Fedora 33 包含 python 2.7 并强制 GCloud SDK 使用它请设置此环境变量

export CLOUDSDK_PYTHON=python2

您可以将此导出命令添加到您的 ~/.bash_profile

Python 3.9 非常新,预计 Gcloud SDK 不支持 3.9,它被编写为与 2.7.x & 3.6 - 3.8 兼容(3.8 可能会导致一些兼容性问题,我建议使用 3.7)

作为解决方法,将 Python 3.8 或 3.7(这些版本适用于 Gcloud 和大多数 Linux 发行版)配置为系统范围的解释器并尝试使用 gcloud 命令。

原文由 Jan Hernandez 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于 macOS/自制软件:

 brew install python@3.8
export CLOUDSDK_PYTHON=python3.8
ln -s /usr/local/Cellar/python@3.8/*/bin/python3.8 /usr/local/bin/python3.8

gcloud components update

# the issue is now resolved and you can return to python 3.9
unset CLOUDSDK_PYTHON

原文由 Dr Nic 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题