"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi Python 3.6.1 renvoie-t-il \"AttributeError : le module \'enum\' n'a pas d'attribut \'IntFlag\' ?\"

Pourquoi Python 3.6.1 renvoie-t-il \"AttributeError : le module \'enum\' n'a pas d'attribut \'IntFlag\' ?\"

Publié le 2024-11-10
Parcourir:815

Why Does Python 3.6.1 Throw \

Pourquoi Python 3.6.1 renvoie "AttributeError : le module 'enum' n'a pas d'attribut 'IntFlag' ?"

Après l'installation de Python 3.6.1 pour macOS X, un tenter d'utiliser la console ou d'exécuter quoi que ce soit avec Python3 génère un message d'erreur énigmatique :

AttributeError: module 'enum' has no attribute 'IntFlag'

Analyse du problème

Curieux de savoir pourquoi cette erreur se produit, nous examinons le code en question :

class RegexFlag(enum.IntFlag):

La classe RegexFlag hérite de enum.IntFlag, qui est un membre du module enum. Cependant, nous rencontrons l'erreur car Python renvoie une exception AttributeError, indiquant que l'énumération du module ne dispose pas de l'attribut IntFlag.

Solution

En approfondissant le problème, nous découvrons que le module enum utilisé peut ne pas être celui de la bibliothèque standard. Le package enum34, conçu pour les versions Python inférieures à 3.5, peut être installé avec l'énumération de la bibliothèque standard dans Python 3.6.1.

La vérification de l'authenticité de l'énumération peut être effectuée en inspectant son chemin de fichier :

import enum
print(enum.__file__)

Si enum.__file__ ne pointe pas vers l'emplacement de la bibliothèque standard (par exemple, /usr/local/lib/python3.6/enum.py), alors le package enum34 est probablement le cause du problème.

Résolution

Pour remédier à la situation, désinstallez enum34:

pip uninstall -y enum34

Alternativement, si le code doit s'exécuter sur les deux versions de Python antérieures à 3.5 et supérieures à 3.5, envisagez d'utiliser le package enum-compat. Ce package installe enum34 uniquement pour les anciennes versions de Python dépourvues du module enum de la bibliothèque standard.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3