安装适用于 macOS X 的 Python 3.6.1 后,尝试使用控制台或使用 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中文网其他相关文章!