问题描述
我刚刚为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'?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!