安裝適用於macOS X 的Python 3.6.後,嘗試使用控制台或使用Python3運行任何內容都會產生神秘的錯誤訊息:
AttributeError: module 'enum' has no attribute 'IntFlag'
問題分析
出於好奇為什麼會發生此錯誤,我們檢查了有問題的程式碼:
<code class="python">class RegexFlag(enum.IntFlag):</code>
RegexFlag 類別繼承自enum.IntFlag,它是enum 模組的成員。然而,我們遇到這個錯誤是因為Python拋出了一個AttributeError異常,表示模組枚舉缺少屬性IntFlag。
解決方案
深入研究這個問題,我們發現正在使用的枚舉模組可能不是標準庫的。 enum34 套件是為 3.5 以下的 Python 版本設計的,可以與 Python 3.6.1 中的標準函式庫的列舉一起安裝。
可以透過檢查其檔案路徑來驗證枚舉的真實性:
<code class="python">import enum print(enum.__file__)</code>
如果enum.__file__ 未指向標準庫位置(例如/usr/local/lib/python3.6 /enum.py),則enum34 套件可能是問題的原因。
解決方案
要修正這種情況,請卸載enum34:
pip uninstall -y enum34
或者,如果程式碼需要在3.5 及更高版本先前的Python 版本上運行3.5 以上,考慮使用enum-compat 套件。此軟體包僅針對缺少標準庫枚舉模組的較舊 Python 版本安裝 enum34。
以上是為什麼 Python 3.6.1 會拋出'AttributeError: Module \'enum\' Has No Attribute \'IntFlag\'?”的詳細內容。更多資訊請關注PHP中文網其他相關文章!