AttributeError: 'importlib' modülünün 'util' niteliği yok
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
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.
MacOS / Homebrew için:
brew install [email protected]
export CLOUDSDK_PYTHON=python3.8
gcloud components update
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!
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.
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