【笔记】修复ImportError: cannot import name ‘Mapping‘ from ‘collections‘
Python 代码Mapping
导入错误修复记录
相关项目:
Windows 系统下 abu 量化交易库部署笔记-CSDN博客
一、问题描述
在运行 Jupyter Notebook 中的 Python 代码,执行 import widget_stock_info
并调用 widget_stock_info.show_ui()
时,出现 ImportError
错误。报错提示无法从 collections
模块导入 Mapping
,具体报错信息如下:
ImportError: cannot import name 'Mapping' from 'collections' (D:\ProgramData\anaconda3\Lib\collections\__init__.py)
ImportError: cannot import name 'Mapping' from 'collections'
二、错误原因分析
在 Python 3.10 及以上版本中,collections.Mapping
已被移动到 collections.abc.Mapping
。当前代码运行环境为 Python 3.10 及以上版本,但项目中的 F:\PythonProjects\abu\abupy\MetricsBu\ABuGridSearch.py
文件仍使用旧的导入方式 from collections import Mapping
,从而导致导入错误。
三、修复过程
- 定位问题文件:根据报错信息,确定问题出在
F:\PythonProjects\abu\abupy\MetricsBu\ABuGridSearch.py
文件中。 - 修改导入语句:打开该文件,将第 8 行的导入语句
from collections import Mapping
修改为from collections.abc import Mapping
。 - 预防潜在问题:为避免项目中其他文件存在类似的旧导入方式,在整个项目中搜索
from collections import Mapping
语句,若发现则一并修改为正确的导入方式。 - 重新运行代码:修改完成并保存文件后,重新运行相关代码,确认问题是否解决。
修改为:
from collections.abc import Mapping
修复后重新运行,报错已消失: