Nach der Installation von Python 3.6.1 für macOS Der Versuch, die Konsole zu verwenden oder etwas mit Python3 auszuführen, führt zu einer kryptischen Fehlermeldung:
AttributeError: module 'enum' has no attribute 'IntFlag'
Problem Analysis
Um herauszufinden, warum dieser Fehler auftritt, untersuchen wir den betreffenden Code:
class RegexFlag(enum.IntFlag):
Die Klasse RegexFlag erbt von enum.IntFlag , das Mitglied des Enum-Moduls ist. Wir stoßen jedoch auf den Fehler, weil Python eine AttributeError-Ausnahme auslöst, was darauf hinweist, dass der Modul-Enumeration das Attribut IntFlag fehlt.
Lösung
Wenn wir uns mit dem Problem befassen, entdecken wir das Das verwendete Enum-Modul ist möglicherweise nicht das der Standardbibliothek. Das Paket enum34, das für Python-Versionen unter 3.5 entwickelt wurde, kann zusammen mit dem Enum der Standardbibliothek in Python 3.6.1 installiert werden.
Die Überprüfung der Authentizität des Enums kann durch Überprüfen seines Dateipfads erfolgen:
import enum
print(enum.__file__)
Wenn enum.__file__ nicht auf den Standardspeicherort der Bibliothek verweist (z. B. /usr/local/lib/python3.6/enum.py), dann ist das Paket enum34 wahrscheinlich das Ursache des Problems.
Lösung
Um das Problem zu beheben, deinstallieren Sie enum34:
pip uninstall -y enum34
Alternativ Wenn der Code auf beiden Python-Versionen vor 3.5 und höher als 3.5 ausgeführt werden muss, sollten Sie die Verwendung des Pakets enum-compat in Betracht ziehen. Dieses Paket installiert enum34 nur für ältere Python-Versionen, denen das Enum-Modul der Standardbibliothek fehlt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3