Ошибка ImportError: cannot import name 'Mapping' from 'collections' внутри requests
Traceback (most recent call last):
File "C:\Users\Kirill Dmitrievich\Desktop\Ариша.py", line 2, in <module>
import telebot, os, random, time, calendar, schedule, _datetime, datetime, json, requests, pyglet
File "C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\__init__.py", line 26, in <module>
from telebot import apihelper, types, util
File "C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\apihelper.py", line 8, in <module>
import requests
File "C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\__init__.py", line 58, in <module>
from . import utils
File "C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\utils.py", line 26, in <module>
from .compat import parse_http_list as _parse_list_header
File "C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\compat.py", line 7, in <module>
from .packages import chardet
File "C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\packages\__init__.py", line 3, in <module>
from . import urllib3
File "C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\packages\urllib3\__init__.py", line 10, in <module>
from .connectionpool import (
File "C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 38, in <module>
from .response import HTTPResponse
File "C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\packages\urllib3\response.py", line 9, in <module>
from ._collections import HTTPHeaderDict
File "C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\packages\urllib3\_collections.py", line 1, in <module>
from collections import Mapping, MutableMapping
ImportError: cannot import name 'Mapping' from 'collections' (C:\Users\Kirill Dmitrievich\AppData\Local\Programs\Python\Python310\lib\collections\__init__.py)
Ответы (3 шт):
Вот что вы можете импортировать из collections:
import collections
print(dir(collections))
['ChainMap', 'Counter', 'OrderedDict', 'UserDict', 'UserList', 'UserString', '_Link', '_OrderedDictItemsView', '_OrderedDictKeysView', '_OrderedDictValuesView', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_chain', '_collections_abc', '_count_elements', '_eq', '_iskeyword', '_itemgetter', '_proxy', '_recursive_repr', '_repeat', '_starmap', '_sys', '_tuplegetter', 'abc', 'defaultdict', 'deque', 'namedtuple']
Откуда у вас Mapping, MutableMapping?
Надо скачать либо другую библиотеку, либо не импортировать подбиблиотеки, если они в коде не используются.
Проверить, что можно импортировать:
print(dir(collections))
Классы Mapping, MutableMapping и некоторые другие начиная с Python 3.3 были перенесены из collections в collections.abc, но для совместимости оставлены доступными через collections. Начиная с Python 3.10 такая возможность импорта убрана.
В Python 3.9 импорт из collections работает, но выдает предупреждение:
Python 3.9.13 (main, May 23 2022, 21:57:12)
[GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import Mapping
<stdin>:1: DeprecationWarning: Using or importing the ABCs from
'collections' instead of from 'collections.abc' is deprecated since
Python 3.3, and in 3.10 it will stop working
>>>
Ошибка возникает у вас внутри библиотеки urllib3, значит у вас установлена старая версия urllib3, не поддерживающая Python 3.10. Нужно обновить urllib3 до актуальной версии:
pip install --upgrade urllib3