为什么 Python 3.6.1 抛出 AttributeError: module 'enum' has no attribute 'IntFlag'?

新手上路,请多包涵

我刚刚为 MacOS X 安装了 Python 3.6.1

当我尝试运行控制台(或使用 Python3 运行任何东西)时,会抛出此错误:

   AttributeError: module 'enum' has no attribute 'IntFlag'

$ /Library/Frameworks/Python.framework/Versions/3.6/bin/python3
Failed to import the site module
Traceback (most recent call last):
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 544, in <module>
    main()
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 530, in main
    known_paths = addusersitepackages(known_paths)
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 282, in addusersitepackages
    user_site = getusersitepackages()
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 258, in getusersitepackages
    user_base = getuserbase() # this will also set USER_BASE
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 248, in getuserbase
    USER_BASE = get_config_var('userbase')
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/sysconfig.py", line 601, in get_config_var
    return get_config_vars().get(name)
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/sysconfig.py", line 580, in get_config_vars
    import _osx_support
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_osx_support.py", line 4, in <module>
    import re
  File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/re.py", line 142, in <module>
    class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'

IntFlag 类存在于 enum.py 中。那么,为什么抛出 AttributeError 呢?

原文由 BryanWheelock 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 766
1 个回答

这是因为你的 enum 不是标准库 enum 模块。您可能安装了软件包 enum34

检查是否属于这种情况的一种方法是检查属性 enum.__file__

 import enum
print(enum.__file__)
# standard library location should be something like
# /usr/local/lib/python3.6/enum.py

从 python 3.6 开始,enum34 库不再与标准库兼容。该库也不是必需的,因此您可以简单地卸载它。

 pip uninstall -y enum34

如果您需要代码在 <=3.4 和 >3.4 的 python 版本上运行,您可以尝试将 enum-compat 作为要求。它只安装 enum34 对于没有标准库枚举的旧版本的 python。

原文由 Håken Lid 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题