安裝適用於macOS X 的Python 3.6.1後,嘗試使用控制台或使用Python3運行任何內容都會產生神秘的錯誤訊息:
AttributeError: module 'enum' has no attribute 'IntFlag'
問題分析
為什麼好奇會出現這個錯誤,我們檢查一下有問題的程式碼:
class RegexFlag(enum.IntFlag):
類別RegexFlag繼承自enum.IntFlag,它是 enum 模組的成員。然而,我們遇到這個錯誤是因為Python拋出了一個AttributeError異常,表示模組枚舉缺少屬性IntFlag。
解決方案
深入研究這個問題,我們發現正在使用的枚舉模組可能不是標準庫的。 enum34 套件是為 3.5 以下的 Python 版本設計的,可以與 Python 3.6.1 中的標準函式庫的列舉一起安裝。
可以透過檢查其檔案路徑來驗證枚舉的真實性:
import enum
print(enum.__file__)
如果 enum.__file__ 沒有指向標準庫位置(例如,/usr/local/lib/python3.6/enum.py),那麼 enum34 套件可能是問題的原因。
解決方案
要糾正這種情況,請卸載enum34:
pip uninstall -y enum34
或者,如果程式碼需要在3.5 之前和高於3.5 的兩個Python 版本上運行,請考慮使用enum-compat 套件。此軟體包僅針對缺少標準庫枚舉模組的較舊 Python 版本安裝 enum34。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3