【问题标题】:in VS Code ImportError: cannot import name 'Mapping' from 'collections'在 VS Code ImportError 中:无法从“集合”导入名称“映射”
【发布时间】:2021-11-21 15:38:19
【问题描述】:

我正在尝试连接到 Postgress 并通过 Flask 创建一个文件夹 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)

我已经尝试了所有的故障排除方法,但都没有奏效。请指教。 这是完整的堆栈: full stack error

【问题讨论】:

  • 请显示完整的堆栈跟踪。它将指出一些代码认为 3.10(开发版本)中的集合包具有映射的位置。以前没有记录。这可能是一个被其他东西取代的内部问题。
  • env) mk@Mitras-MBP Flasktut % python3 app.py Traceback(最近一次调用最后):文件“/Users/mk/Flasktut/app.py”,第 2 行,在 from flask import Flask, render_template File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/flask/__init__.py", line 14, in from jinja2 import escape File "/Users/ mk/Flasktut/env/lib/python3.10/site-packages/jinja2/__init__.py”,第 33 行,在 从 jinja2.environment 导入环境,模板文件“/Users/mk/Flasktut/env/lib /python3.10/site-packages/jinja2/environment.py",第 16 行,在
  • 我认为问题出在 test.py 内部:from collections import Mapping
  • 解决的问题:from collections.abc import Mapping, MutableMapping
  • Python3.10 似乎改变了这种情况,它提供了一个关于使用新版本软件时发生的有趣事情的间接教训。

标签: python-3.x postgresql sqlite flask sqlalchemy


【解决方案1】:

使用旧版本的python(例如3.8)

【讨论】:

  • 3.9.7 也适用于我。
  • 我用的是3.8,问题依旧!
  • @Mitra 那为什么这是公认的答案?
  • 我使用堆栈已经很长时间了,但最近,我创建了自己的帐户。所以,不知道怎么操作:)
【解决方案2】:

作为Mitra said above,更改:

from collections import Mapping

from collections.abc import Mapping

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      正如其他人所说,这是由 Python 3.10 开始的 collections 接口的更改引起的。据我所知,目前有三个选项可以缓解这个问题:

      • 恢复到 Python 3.9。

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

      • 手动修补代码。

        要修补ImportError,请参阅https://stackoverflow.com/a/69727802/13994294

      【讨论】:

        【解决方案5】:

        在我的环境中,使用错误修复 Python 3.10.2 版解决了该问题

        【讨论】:

          【解决方案6】:

          requests 2.7.0 我也遇到了同样的问题 ,但现在我使用 requests 2.27.1python 3.10.2 没有问题。

          【讨论】:

          • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
          猜你喜欢
          • 2022-01-04
          • 2022-06-22
          • 2022-07-07
          • 1970-01-01
          • 2020-03-09
          • 2013-07-30
          • 2022-01-22
          • 2021-06-30
          相关资源
          最近更新 更多