Maison  >  Article  >  développement back-end  >  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\' ?\"

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 14:45:52754parcourir

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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn