python - 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'
解决方案
从 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 命令。
推荐阅读
- python - Django / Crispy 表单继承未转换为呈现的 HTML 页面
- node.js - (节点:5321)UnhandledPromiseRejectionWarning:错误:用户“postgres”的密码验证失败
- apache-kafka - Ccloudexporter - 如何计算发送到 Kafka 主题的消息
- javascript - 如何仅从一个元素中检测突出显示的文本?
- javascript - 带有拼接的文本替换不适用于微笑(或多字节字符)
- javascript - IMGUR API - 在 localhost 中运行应用程序时出现错误 429
- matlab - 在 matlab 中将 affine2d 命令与 dicom 图像一起使用
- django - 登录后显示 AnonymousUser 的 django 登录
- python - ValueError:无法解析位置 1363 处的字符串“-”
- python - 没有名为 W0614 pylint 的模块(致命)