in VS Code ImportError: cannot import name 'Mapping' from 'collections'

in VS Code ImportError: cannot import name 'Mapping' from 'collections'

我正在尝试通过 Flask 连接到 Postgress 并创建一个文件夹 test.db。 当我在终端中 运行 “python3” 以及当我从那里 运行 “from app import db” 时,我收到一个导入错误:

ImportError: cannot import name 'Mapping' from 'collections' (/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/collections/__init__.py)

我已经尝试了所有故障排除,但 none 成功了。请指教。 这是完整的堆栈:

使用旧版本 python(例如 3.8)

作为,更改:

from collections import Mapping

from collections.abc import Mapping

那是关于 python 的版本。 大多数时候 python 3.10 有这个问题。

您可以使用 python 3.9 或 3.8 版本解决此问题。 要么 如果 python-docx 等软件包或其他有关 MS 的软件包出错,您可以使用 pipwin 解决它。

如其他人所述,这是由 collections 界面从 Python 3.10 开始的更改引起的。据我所知,目前可以通过三个选项来缓解此问题:

  • 恢复到 Python3.9.

  • 如果错误出现在第三方库中,请先尝试更新此库(pip install <package> --upgrade)。

  • 手动修补代码。

    要修补 ImportError,请参阅

在我的环境中,使用错误修复 Python 版本 3.10.2

解决了该问题

只需更新到requests 2.27.1python3.10.2或更高版本,问题就会得到解决.

正如正确指出的那样,您需要从 collections 内部的新 abc 模块导入以用于更高版本的 Python。

如果您需要让您的代码向后兼容旧版本的Python,您可以使用这个:

try:
    from collections.abc import Mapping
except ImportError:
    from collections import Mapping

您将从 Python 版本 3.8 开始遇到此问题。您可以使用 Python 版本 3.7.9 及更早版本或参考上面 John 的回答并在过时的导入语句中进行更改。

同样如此,但我通过以下方法解决了问题:

pip3 list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U 

这个会

您可以尝试 from typing import Mapping 作为替代方案。