Mac端Python3.10导入requests报AttributeError该如何解决?
不需要降级Python版本,该报错由低版本requests库未适配Python 3.10的API变更导致。
Python 3.3版本起,MutableMapping等抽象基类就已从collections模块迁移到collections.abc子模块,Python 3.10正式移除了collections模块下的旧别名,你本地安装的requests版本过老,仍在调用已被移除的collections.MutableMapping属性,因此触发报错。
可行解决方法
优先升级requests库(最推荐方案)
直接执行升级命令即可适配Python 3.10:# 全局环境安装 pip3 install --upgrade requests # 若提示权限不足,可执行 sudo pip3 install --upgrade requests # 若使用虚拟环境,先激活虚拟环境后再执行升级命令 pip install --upgrade requests升级完成后重新执行
import requests即可验证是否修复。临时兼容方案(适用于项目无法升级requests版本的场景)
在代码入口处、导入requests之前添加补丁代码,手动补全collections模块的别名:import collections from collections import abc collections.MutableMapping = abc.MutableMapping # 后续再导入requests就不会触发报错 import requests注意该方案为临时兼容手段,长期使用还是建议升级requests到最新稳定版。
使用虚拟环境隔离依赖
如果你不想改动全局Python环境的依赖,可通过venv创建独立虚拟环境,在虚拟环境中安装适配的requests版本:# 创建虚拟环境 python3.10 -m venv crawler_env # 激活虚拟环境 source crawler_env/bin/activate # 安装最新版requests pip install requests
内容的提问来源于stack exchange,提问作者HIRPA SILESHI
相关产品推荐
相关产品推荐

