AttributeError : 'importlib'모듈에 'util'속성이 없습니다.

Sep 22 2020

방금 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'

답변

73 JanHernandez Sep 22 2020 at 13:53

GCP 지원에서 업데이트

GCP 지원은 에 318.0.0출시 된 새 버전이 2020.11.10python 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 명령어를 사용해보세요.

26 DrNic Nov 04 2020 at 21:18

macOS / Homebrew의 경우 :

brew install [email protected]
export CLOUDSDK_PYTHON=python3.8
gcloud components update
10 Shishir Nov 09 2020 at 10:47

양조 업그레이드 후 나에게 일어났습니다. python 3.8에서 작동합니다.

python3.8을 쉘 경로로 만들어야합니다. 다음 줄을 실행했고 작동했습니다.

export PATH="/usr/local/opt/[email protected]/bin:$PATH"
alias python=/usr/local/opt/[email protected]/bin/python3

감사합니다!

6 III.6 Oct 28 2020 at 10:47

Python 2를 사용하지 않으려면 SDK가 Python 3.9 지원을 시작할 때까지 Fedora 33에서 Python 3.8을 사용할 수 있습니다.

다음을 사용하여 Python 3.8을 설치합니다.

sudo dnf install python3.8

다음을 실행하여 설치를 확인할 수 있습니다.

python3.8 --version

그런 다음이를 Google Cloud SDK 인터프리터로 설정합니다.

export CLOUDSDK_PYTHON=python3.8

그러면 SDK가 정상적으로 작동합니다.

3 kurkop Dec 10 2020 at 23:39

Mac OS 사용자의 경우

우선 실행해야합니다 brew update.

이 오류가있는 경우 :

Error: homebrew-core is a shallow clone. To `brew update` first run:
  git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch --unshallow
This restriction has been made on GitHub's request because updating shallow
clones is an extremely expensive operation due to the tree layout and traffic of
Homebrew/homebrew-core. We don't do this for you automatically to avoid
repeatedly performing an expensive unshallow operation in CI systems (which
should instead be fixed to not use shallow clones). Sorry for the inconvenience!

다음 명령을 실행하십시오.

git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch --unshallow
git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask" fetch --unshallow

지금,

Python 3.8 업데이트 brew upgrade [email protected]

PATH에 Python 3.8 추가 export PATH="/usr/local/opt/[email protected]/bin:$PATH"

Cloud SDK에서 Python 3.8 사용 export CLOUDSDK_PYTHON=python3.8

이제 gcloud 구성 요소를 업데이트 할 수 있습니다. gcloud components update