Ошибка ImportError: невозможно импортировать объект сопоставления из модуля Collections возникает, когда вы пытаетесь импортировать объект сопоставления из модуля коллекций, но он недоступен в этом модуле.
Основная причина ошибки заключается в том, что вы используете устаревшую версию Python, которая не включает объект сопоставления в модуль Collections.
Объект сопоставления был добавлен в Python 3.3, поэтому он не будет доступен, если вы используете более раннюю версию Python.
Воспроизведение ошибки
|
1 |
from collections import mapping |
Приведенный выше оператор импорта выдаст следующую ошибку.
|
1 |
ImportError: cannot import name 'mapping' from 'collections' |
Как исправить
Вот три способа исправить ошибку ImportError.
Способ 1: использование модуля Collections.abc
Чтобы исправить ошибку, используйте абстрактный базовый класс abc.Mapping из модуля Collections.abc, чтобы проверить, является ли объект сопоставлением.
|
1 2 3 4 5 6 7 8 9 |
from collections.abc import Mapping def is_mapping_exists(obj): return isinstance(obj, Mapping) main_dict = {'k': 21, 'b': 19} print(is_mapping_exists(main_dict)) |
Выход
|
1 |
True |
Способ 2: настройка версии Python
Вы можете понизить версию Python до 3.10, если вы не добавляете подпакет «abc», но это не рекомендуется, поскольку вы потеряете большинство новейших функций безопасности.
Если вы используете более старую версию Python и хотите использовать модуль Collections.abc, вам необходимо обновить версию Python до последней.
Способ 3: использование блока try-except
Если вы не уверены в версии и не можете изменить конфигурацию версии Python, мы можем использовать оба синтаксиса в блоке try-except.
|
1 2 3 4 5 |
try: from collections import Mapping except: from collections.abc import Mapping print(Mapping) |
