Import error with named tuple and Mapping

651 views Asked by At

I have trying to fix an import error with the requests library in Python 3.11. This is to run a Discord bot that I have created. My original error is given as ImportError: cannot import name 'Mapping' from 'collections' and in response I have tried changing a line from from collections import namedtuple, Mapping to from collections.abc import namedtuple, Mapping. This has not fixed my original error. The new error created is the traceback given below:

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)
2

There are 2 answers

0
Ilya Kuleshov On BEST ANSWER

namedtuple is located in the collections module, Mapping -- in the collections.abc module. Starting from python 3.10 the line from collections import Mapping throws an error. You should separate the two imports, like so:

from collections.abc import Mapping
from collections import namedtuple
0
wjandrea On

You must be using an outdated version of urllib3. This issue was fixed in Feb 2018 and then the selectors module was removed entirely, before version 1.23, released in Jun 2018.