1. ホーム
  2. python

[解決済み] AttributeError: モジュール 'importlib' には属性 'util' がありません。

2023-05-18 06:46:56

質問

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'

どのように解決するのですか?

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

このexportコマンドを ~/.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 コマンドを使用してみてください。