ImportError:无法使用 Python 3.10 从“collections”导入名称“...”

2025-02-25 09:07:00
admin
原创
34
摘要:问题描述:我正在尝试运行使用各种依赖项的程序,但自从升级到 Python 3.10 后,它就不再起作用了。当我在终端中运行“python3”并从那里导入我的依赖项时,我收到一个错误:ImportError: cannot import name 'Mapping' from 'collections' (/L...

问题描述:

我正在尝试运行使用各种依赖项的程序,但自从升级到 Python 3.10 后,它就不再起作用了。当我在终端中运行“python3”并从那里导入我的依赖项时,我收到一个错误:

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

这似乎是一个普遍的问题,但是这是我的具体案例的回溯:

Traceback (most recent call last):
 File "/Users/mk/Flasktut/app.py", line 2, in <module>
  from flask import Flask, render_template
 File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/flask/__init__.py", line 14, in <module>
  from jinja2 import escape
 File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/jinja2/__init__.py", line 33, in <module>
  from jinja2.environment import Environment, Template
 File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/jinja2/environment.py", line 16, in <module>
  from jinja2.defaults import BLOCK_START_STRING, \n File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/jinja2/defaults.py", line 32, in <module>
  from jinja2.tests import TESTS as DEFAULT_TESTS
 File "/Users/mk/Flasktut/env/lib/python3.10/site-packages/jinja2/tests.py", line 13, in <module>
  from collections import Mapping
ImportError: cannot import name 'Mapping' from 'collections' (/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/collections/__init__.py)

解决方案 1:

改变:

from collections import Mapping

from collections.abc import Mapping

解决方案 2:

这是由于从 Python 3.10 开始界面发生变化而导致的collections。据我所知,目前有三种方法可以缓解此问题:

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

  • 恢复到 Python 3.9。

  • 手动修补代码。

有关修补的信息ImportError,请参阅https://stackoverflow.com/a/69727802/13994294

解决方案 3:

对于 Python 的更高版本,您需要从abc里面的新模块导入。collections

如果你需要让你的代码向后兼容旧版本的 Python,你可以使用以下命令:

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

解决方案 4:

错误原因

如果你尝试在 Python 3.9.x 中导入,就会清楚:

Python 3.9.10 (main, Jan 15 2022, 11:40:53)
[Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import Mapping
<stdin>:1: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working

它明确提到在 3.10 中它将停止工作。因此要使用,请将版本更改为 Python 3.9 或更低版本。如果您使用pipenv来管理虚拟环境,则步骤如下:

$ pipenv --rm        # to remove the virtual env
$ exit               # to exit the virtual env
$ vim Pipfile        # here change the version to '3.9' by replacing '3.10'
$ pipenv shell       # this will create a virtual env with 3.9
$ pipenv install     # to install the requirements

我们刚刚从 Python 3.10 切换到 Python 3.9,它目前支持代码。

解决方案 5:

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

解决方案 6:

我补充道

from collections.abc import Mapping
from collections.abc import MutableMapping
from collections.abc import Sequence

“C:\Users\natha\AppData\Local\Programs\Python\Python311\Lib\collections_ init _.py”

解决方案 7:

导致此问题的原因可能是软件包过时

就我而言,将 requirements.txt 上的PyJWT更新到最新版本解决了这个问题

解决方案 8:

这是关于 Python 版本的问题。大多数时候 Python 3.10 都会出现这个问题。

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

解决方案 9:

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

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

解决方案 10:

建议在虚拟环境中使用以前版本的 Python(例如 3.8 或 3.9),而不是在根系统上恢复 Python。

virtualenv --python="/YOUR PATH/python3.9" "name of your env"

解决方案 11:

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

解决方案 12:

只需更新到请求 2.27.1python 3.10.2或更高版本,问题就会得到解决。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1344  
  信创产业的蓬勃发展推动着各行业数字化转型加速,数据库迁移作为其中关键一环,面临诸多挑战。信创数据库迁移旨在将传统数据库平稳过渡到信创环境,以满足自主可控、安全可靠的需求。这一过程涉及技术、业务等多方面因素,稍有不慎就可能出现各种问题,影响业务的正常运行。深入探讨信创数据库迁移过程中的常见问题及解决方案,对于保障迁移工作...
2027年信创国产化   54  
  随着信息技术的飞速发展,信创国产化成为了国家战略的重要组成部分。国产化信创产品名录涵盖了众多领域,其在各个关键应用场景中发挥着重要作用。而信创国产化操作系统作为其中的核心环节,具备五大核心优势,为我国信息技术产业的自主可控发展提供了坚实支撑。关键应用场景之办公领域在办公领域,国产化信创产品有着广泛且深入的应用。如今,越...
国产信创系统   50  
  随着信息技术的飞速发展,信创国产化操作系统在政府部门的推广应用具有重要的战略意义。它不仅关乎国家信息安全,更是推动国内信息技术产业自主创新、实现科技自立自强的关键举措。在当前复杂的国际形势下,政府部门积极推广信创国产化操作系统,对于保障国家政务信息的安全稳定运行,提升信息技术的自主可控能力,具有不可替代的重要作用。推广...
信创产品有哪些   37  
  在企业数字化转型的进程中,信创数据库解决方案的选择至关重要。它不仅关乎企业数据的安全存储与管理,更影响着企业业务的稳定运行与未来发展。合适的信创数据库能够助力企业在复杂多变的市场环境中提升竞争力,保障数据主权与安全。然而,面对市场上众多的信创数据库产品和解决方案,企业往往感到困惑,不知如何做出正确的选择。接下来,我们将...
信创电脑   29  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用