После установки Python 3.6.1 для macOS X попытка использовать консоль или запустить что-либо с помощью Python3 приводит к загадочной ошибке сообщение:
AttributeError: module 'enum' has no attribute 'IntFlag'
Анализ проблемы
Интересно, почему возникает эта ошибка, мы исследуем рассматриваемый код:
class RegexFlag(enum.IntFlag):
Класс RegexFlag наследуется от enum.IntFlag, который является членом модуля enum. Однако мы столкнулись с ошибкой, поскольку Python выдает исключение AttributeError, указывающее на то, что в перечислении модуля отсутствует атрибут IntFlag.
Решение
Углубляясь в проблему, мы обнаруживаем, что используемый модуль enum может не принадлежать стандартной библиотеке. Пакет enum34, предназначенный для версий Python ниже 3.5, может быть установлен вместе с enum стандартной библиотеки в Python 3.6.1.
Проверку подлинности перечисления можно выполнить, проверив путь к его файлу:
import enum
print(enum.__file__)
Если enum.__file__ не указывает на расположение стандартной библиотеки (например, /usr/local/lib/python3.6/enum.py), то пакет enum34, скорее всего, является причина проблемы.
Решение
Чтобы исправить ситуацию, uninstall enum34:
pip uninstall -y enum34
В качестве альтернативы, если код должен работать на обеих версиях Python до 3.5 и выше 3.5, рассмотрите возможность использования пакета enum-compat. Этот пакет устанавливает enum34 только для старых версий Python, в которых отсутствует модуль enum стандартной библиотеки.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3