You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.10执行pip命令报cannot import name Mapping错误解决方法

故障原因
  • Python 3.10 已正式移除collections模块下的Mapping等容器抽象基类,这类对象早在Python 3.3版本就被迁移到collections.abc子模块,版本过旧的urllib3未做跨版本兼容判断,就会触发ImportError: cannot import name 'Mapping' from 'collections'报错。
  • 手动删除pip内置_vendor目录下的urllib3文件夹直接破坏了pip的依赖完整性,pip启动时找不到内置依赖就会抛出ModuleNotFoundError: No module named 'pip._vendor.urllib3',此时pip本身已损坏,无法通过自带的pip命令完成自修复。

注意:不要直接手动删除pip安装目录下_vendor文件夹内的任何文件,该目录存放pip运行的内置依赖,手动删除会直接导致pip完全失效,无法通过pip命令完成自修复。

修复步骤

优先方案:通过ensurepip重置pip(操作最简单,成功率最高)

  1. 打开命令行终端,Windows环境执行以下命令,强制重装和当前Python3.10版本匹配的官方默认pip:
py -3.10 -m ensurepip --upgrade

Linux/macOS环境替换为对应命令:

python3.10 -m ensurepip --upgrade
  1. 命令执行完成后,验证pip基础功能是否恢复:
py -3.10 -m pip --version
  1. 功能恢复后,将pip和urllib3升级到完全兼容Python3.10的最新版本,避免后续再触发同类导入错误:
py -3.10 -m pip install --upgrade pip urllib3

备选方案:手动补全损坏的vendor依赖

如果ensurepip执行报错无法使用,按以下步骤手动修复:

  1. 定位本机Python3.10的pip vendor目录,常见默认路径如下:
    • Windows:C:\Users\【你的系统用户名】\AppData\Local\Programs\Python\Python310\Lib\site-packages\pip\_vendor\
    • Linux:系统级路径为/usr/lib/python3.10/site-packages/pip/_vendor/,用户级路径为~/.local/lib/python3.10/site-packages/pip/_vendor/
    • macOS:官方安装包路径为/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pip/_vendor/
  2. 获取完整的适配Python3.10版本的urllib3文件夹,放到上述_vendor目录下:可以从其他同版本正常运行的Python3.10环境的同路径直接复制,也可以下载对应版本的pip离线安装包,解压后提取pip/_vendor/路径下的urllib3文件夹。
  3. 文件放置完成后,执行py -3.10 -m pip list验证功能是否正常。

临时修复方法(仅应急使用)

如果暂时无法重置pip,且已经补全了urllib3的文件,可以找到报错的selectors.py文件,将头部的导入行from collections import Mapping替换为兼容写法:

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

该方法仅能临时解决导入报错,长期使用建议直接重置pip到最新兼容版本。

内容的提问来源于stack exchange,提问作者ahmed barbary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:48:16