«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему Python 3.6.1 выдает ошибку «AttributeError: модуль «enum» не имеет атрибута «IntFlag»?»

Почему Python 3.6.1 выдает ошибку «AttributeError: модуль «enum» не имеет атрибута «IntFlag»?»

Опубликовано 10 ноября 2024 г.
Просматривать:940

Why Does Python 3.6.1 Throw \

Почему Python 3.6.1 выдает сообщение «AttributeError: Модуль 'enum' не имеет атрибута 'IntFlag'?»

После установки 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