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

Python3.11中requests库namedtuple与Mapping导入错误求助

Python 3.11环境下Discord机器人requests导入错误解决

问题背景

在Python 3.11环境运行自制Discord机器人时,遭遇requests库导入错误。初始错误提示:

ImportError: cannot import name 'Mapping' from 'collections'

尝试将导入语句从from collections import namedtuple, Mapping改为from collections.abc import namedtuple, Mapping后,问题未解决,反而触发新错误,完整回溯信息如下:

Traceback (most recent call last):
  File "E:\python projects\newer Vorpal\main.py", line 4, in <module>
from game import game, shopping
  File "E:\python projects\newer Vorpal\game.py", line 10, in <module>
from monsters import createmonsters
  File "E:\python projects\newer Vorpal\monsters.py", line 2, in <module>
import requests
  File "C:\Users\andreas\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\__init__.py", line 43, in <module>
import urllib3
  File "C:\Users\andreas\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\__init__.py", line 8, in <module>
from .connectionpool import (
  File "C:\Users\andreas\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 29, in <module>
from .connection import (
  File "C:\Users\andreas\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connection.py", line 39, in <module>
from .util.ssl_ import (
  File "C:\Users\andreas\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\util\__init__.py", line 3, in <module>
from .connection import is_connection_dropped
  File "C:\Users\andreas\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\util\connection.py", line 3, in <module>
from .wait import wait_for_read
  File "C:\Users\andreas\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\util\wait.py", line 1, in <module>
from .selectors import (
  File "C:\Users\andreas\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\util\selectors.py", line 14, in <module>
from collections.abc import namedtuple, Mapping

ImportError: cannot import name 'namedtuple' from 'collections.abc' (C:\Users\andreas\AppData\Local\Programs\Python\Python311\Lib\collections\abc.py)

解决方案

1. 修正本地代码的导入语句

Python 3.10+版本中,Mapping抽象类已从collections模块迁移至collections.abc,但namedtuple仍保留在collections模块中。你之前的修改错误地将两者都移到collections.abc导入,导致新错误。正确写法为:

from collections import namedtuple
from collections.abc import Mapping

2. 升级第三方库适配Python 3.11

如果错误来自第三方库(如回溯中的urllib3),说明当前安装的urllib3/requests版本不兼容Python 3.11。执行以下命令升级到最新兼容版本:

pip install --upgrade urllib3 requests

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:17:47