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.
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