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 une erreur cryptique message :
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 :
<code class="python">class RegexFlag(enum.IntFlag):</code>
Le La classe RegexFlag hérite de enum.IntFlag, qui est 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 :
<code class="python">import enum print(enum.__file__)</code>
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 la cause du problème.
Résolution
Pour rectifier le situation, désinstallez enum34 :
pip uninstall -y enum34
Alternativement, si le code doit être exécuté sur les deux versions de Python avant 3.5 et supérieur à 3.5, pensez à 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!