Python3.10报cannot import name 'Mapping' from 'collections'错误
运行Python项目时触发如下报错:
ImportError: cannot import name 'Mapping' from 'collections' (C:\Users\User\AppData\Local\Programs\Python\Python310\lib\collections_init_.py)
报错原因
这是典型的Python版本兼容性问题:
Python 3.3版本起,Mapping、MutableMapping等集合抽象基类就被迁移到了collections.abc子模块下,当时collections模块保留的同名导出仅作为向下兼容的临时别名,到Python 3.10版本正式移除了这些别名的直接支持。你本地使用的是Python 3.10环境,运行的代码仍沿用from collections import Mapping的旧版导入写法,就会抛出该导入错误。
可行解决方法
- 修改自有代码的导入语句:如果报错来自你自己编写的业务代码,直接把导入逻辑改成
from collections.abc import Mapping即可。如果项目需要同时兼容Python 3.9及更早版本,可以加一层兼容判断:
try: from collections.abc import Mapping except ImportError: from collections import Mapping
- 升级对应第三方依赖:如果报错栈指向你通过pip安装的第三方包,说明当前安装的包版本过旧,没有做Python 3.10+的适配,直接升级该依赖到最新正式版即可,执行命令参考:
pip install --upgrade 触发报错的第三方包名
- 降级本地Python运行版本:如果项目代码、依赖版本都暂时不支持修改,可以把本地Python版本切换到3.9及以下,这些版本仍保留
collections模块下的抽象基类别名导出,运行时不会触发该报错。
内容的提问来源于stack exchange,提问作者user12417634
相关产品推荐
相关产品推荐

