安装适用于 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