本文介绍了为什么Python 3.6.1抛出AttributeError:模块'enum'没有属性'IntFlag'?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚为MacOS X安装了Python 3.6.1

I just installed Python 3.6.1 for MacOS X

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

When I attempt to run the Console(or run anything with Python3), this error is thrown:

  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?

The class IntFlag exists within enum.py. So, why is the AttributeError being thrown?

推荐答案

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

It's because your enum is not the standard library enum module. You probably have the package enum34 installed.

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

One way check if this is the case is to inspect the property 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库不再与标准库兼容.该库也是不必要的,因此您只需将其卸载即可.

Since python 3.6 the enum34 library is no longer compatible with the standard library. The library is also unnecessary, so you can simply uninstall it.

pip uninstall -y enum34

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

If you need the code to run on python versions both <=3.4 and >3.4, you can try having enum-compat as a requirement. It only installs enum34 for older versions of python without the standard library enum.

这篇关于为什么Python 3.6.1抛出AttributeError:模块'enum'没有属性'IntFlag'?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 10:36