AttributeError: 'importlib' modülünün 'util' niteliği yok

Sep 22 2020

Az önce Fedora 32'den Fedora 33'e (Python 3.9 ile birlikte gelir) yükselttim. O zamandan beri gcloudkomut çalışmayı durdurdu:

[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'

Yanıtlar

73 JanHernandez Sep 22 2020 at 13:53

GCP desteğinden güncelleme

GCP desteği , 318.0.0yayınlanan yeni sürümün 2020.11.10python 3.9'u desteklemesi gerektiğinden bahsetti

Gcloud sdk'mi olarak güncelledim 318.0.0ve şimdi python 3.9.0 destekleniyor gibi görünüyor.

Bu sorunu çözmek için çalıştırın

gcloud components update

Fedora 33, python 2.7 içerir ve GCloud SDK'yı kullanmaya zorlamak için lütfen bu ortam değişkenini ayarlayın

export CLOUDSDK_PYTHON=python2

Bu dışa aktarma komutunu şuraya ekleyebilirsiniz: ~/.bash_profile

Python 3.9 çok yenidir ve Gcloud SDK'nın 3.9'u desteklememesi beklenmektedir, 2.7.x ve 3.6 - 3.8 ile uyumlu olması için yazılmıştır (3.8, 3.7'yi kullanmanızı tavsiye ettiğim bazı uyum sorunlarına neden olabilir)

Geçici bir çözüm olarak, Python 3.8 veya 3.7'yi (bu sürümler Gcloud ve Linux dağıtımlarının çoğu için iyi çalışır) sistem çapında yorumlayıcı olarak yapılandırın ve gcloud komutlarını kullanmayı deneyin.

26 DrNic Nov 04 2020 at 21:18

MacOS / Homebrew için:

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

Bir demleme güncellemesinden sonra başıma geldi. Python 3.8 ile çalışır.

Kabuk yolunuza python3.8 yapmanız gerekir. Aşağıdaki satırları uyguladım ve işe yaradı

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

Teşekkür ederim!

6 III.6 Oct 28 2020 at 10:47

Python 2'yi kullanmak istemiyorsanız, SDK Python 3.9'u desteklemeye başlayana kadar Fedora 33'te Python 3.8'i kullanabilirsiniz.

Python 3.8'i kullanarak kurun:

sudo dnf install python3.8

Kurulumunuzu aşağıdakileri çalıştırarak doğrulayabilirsiniz:

python3.8 --version

Ardından bunu Google Cloud SDK yorumlayıcısı olarak ayarlayın:

export CLOUDSDK_PYTHON=python3.8

Bundan sonra SDK normal şekilde çalışmalıdır.

3 kurkop Dec 10 2020 at 23:39

Mac OS Kullanıcıları için

Öncelikle koşmalısın brew update.

Bu hatayı alıyorsanız:

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!

Sonraki komutları çalıştırın:

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

Şimdi,

Python 3.8'i güncelleyin brew upgrade [email protected]

PATH'e python 3.8 ekleyin export PATH="/usr/local/opt/[email protected]/bin:$PATH"

Cloud SDK'da python 3.8 kullanın export CLOUDSDK_PYTHON=python3.8

Artık gcloud bileşenlerini güncelleyebilirsiniz gcloud components update