C:\Users\23228\PyCharmMiscProject\.venv\Scripts\python.exe D:\commodity_sorting_system\code\metrics.py Error importing huggingface_hub.hf_api: cannot import name 'MutableMapping' from 'collections' (C:\Users\23228\AppData\Local\Programs\Python\Python312\Lib\collections\__init__.py) Traceback (most recent call last): File "D:\commodity_sorting_system\code\metrics.py", line 125, in <module> from datasets.my_dataset import MyDataset File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\datasets\__init__.py", line 17, in <module> from .arrow_dataset import Dataset File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\datasets\arrow_dataset.py", line 60, in <module> from huggingface_hub import ( File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\huggingface_hub\__init__.py", line 520, in __getattr__ submod = importlib.import_module(submod_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\23228\AppData\Local\Programs\Python\Python312\Lib\importlib\__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\huggingface_hub\hf_api.py", line 45, in <module> import requests File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\requests\__init__.py", line 58, in <module> from . import utils File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\requests\utils.py", line 23, in <module> from .compat import parse_http_list as _parse_list_header File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\requests\compat.py", line 7, in <module> from .packages import charade as chardet File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\requests\packages\__init__.py", line 3, in <module> from . import urllib3 File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\requests\packages\urllib3\__init__.py", line 24, in <module> from .poolmanager import PoolManager, ProxyManager, proxy_from_url File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\requests\packages\urllib3\poolmanager.py", line 14, in <module> from ._collections import RecentlyUsedContainer File "C:\Users\23228\PyCharmMiscProject\.venv\Lib\site-packages\requests\packages\urllib3\_collections.py", line 7, in <module> from collections import MutableMapping ImportError: cannot import name 'MutableMapping' from 'collections' (C:\Users\23228\AppData\Local\Programs\Python\Python312\Lib\collections\__init__.py) 进程已结束,退出代码为 1
时间: 2025-06-04 19:23:09 浏览: 12
### 回答问题
根据你提供的错误信息,问题出在 `collections` 模块中无法导入 `MutableMapping`。这是因为在 Python 3.10 及更高版本中,`collections.MutableMapping` 已被移除,取而代之的是直接使用 `collections.abc.MutableMapping`。
以下是解决该问题的步骤和代码修改:
---
### 修改后的代码
#### 1. 确保依赖库正确安装
首先,确保你的环境中安装了正确的库版本。可以尝试以下命令重新安装相关库:
```bash
pip install --upgrade requests huggingface_hub datasets
```
#### 2. 修改代码以适配 Python 3.10+ 的变化
如果问题仍然存在,可以手动修改相关库的源码或在自己的代码中进行适配。以下是具体修改方法:
##### 修改 `requests/packages/urllib3/_collections.py`
找到 `requests/packages/urllib3/_collections.py` 文件,将以下代码:
```python
from collections import MutableMapping
```
修改为:
```python
from collections.abc import MutableMapping
```
##### 修改 `huggingface_hub/hf_api.py`
如果 `huggingface_hub` 库也受到影响,可以类似地修改其源码。找到 `hf_api.py` 文件,将所有涉及 `collections.MutableMapping` 的地方替换为 `collections.abc.MutableMapping`。
---
### 示例代码
如果你不想修改第三方库的源码,可以在自己的代码中进行兼容性处理。以下是一个示例代码,展示如何动态适配不同版本的 Python:
```python
# metrics.py
import sys
# 兼容 Python 3.10+ 的修改
if sys.version_info >= (3, 10):
from collections.abc import MutableMapping
else:
from collections import MutableMapping
print(f"Using MutableMapping from: {'collections.abc' if sys.version_info >= (3, 10) else 'collections'}")
# 其他代码逻辑...
```
上述代码通过判断 Python 版本号,动态选择从 `collections` 或 `collections.abc` 导入 `MutableMapping`。
---
### 解释
1. **Python 版本差异**:
- 在 Python 3.3 引入了 `collections.abc` 模块,用于抽象基类(如 `MutableMapping`)。
- 从 Python 3.10 开始,`collections` 模块中的这些抽象基类被完全移除,必须从 `collections.abc` 导入。
2. **动态适配**:
- 使用 `sys.version_info` 判断当前运行的 Python 版本号,确保代码能够在不同版本的 Python 中正常运行。
3. **第三方库问题**:
- 如果第三方库未及时更新以适配最新版本的 Python,可能会出现类似的导入错误。可以通过升级库或手动修改源码解决。
---
###
阅读全文
相关推荐


















