Не удается импортировать «collection.abc» при использовании подсистемы Windows для Linux - PullRequest
0 голосов
/ 27 мая 2019

Я использую подсистему Windows для Linux (в частности, Ubuntu для Windows) для запуска кода Python.Когда я пытаюсь запустить следующее: 'import collection.abc', я получаю следующую ошибку: 'ImportError: нет модуля с именем abc'.

Я могу импортировать 'collection', но если я попытаюсь: 'collection.abc ', я получаю следующую ошибку:' AttributeError: у объекта 'module' нет атрибута 'abc' '.

Кроме того, я попытался импортировать модуль в командной строке без использования Ubuntu для Windows, и он импортируетуспешно.

Модуль 'коллекций' должен быть включен в python по умолчанию, поэтому я не уверен, почему он дает мне эту ошибку.

1 Ответ

0 голосов
/ 08 июня 2019

Из документации Python 3 для модуля collections :

Изменено в версии 3.3: Перемещено Коллекции абстрактных базовых классов к collections.abc модуль. Для обратной совместимости они продолжают оставаться видимыми в этом модуле через Python 3.7. Впоследствии они будут полностью удалены.

Таким образом, любой контент collections.abc, который уже существует в Python <= 3.2, включая Python 2, находится в <code>collections непосредственно.

Чтобы поддерживать все версии Python, используйте блок try / исключением:

try:  # works in Python >= 3.3
    import collections.abc as collections_abc
except ImportError:  # Python <= 3.2 including Python 2
    import collections as collections_abc

Тогда используйте, например, collections_abc.Sequence вместо collections.abc.Sequence в Python> = 3.3 и collections.Sequence в Python <= 3.2. </p>

См. Более подробное обсуждение в этот другой ответ .

...