我刚为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'
Run Code Online (Sandbox Code Playgroud)
IntFlag类存在于enum.py中.那么,为什么抛出AttributeError?
Håk*_*Lid 136
这是因为您enum不是标准的库enum模块.您可能已enum34安装该软件包.
检查是否属于这种情况的一种方法是检查财产 enum.__file__
import enum
print(enum.__file__)
# standard library location should be something like
# /usr/local/lib/python3.6/enum.py
Run Code Online (Sandbox Code Playgroud)
从python 3.6开始,enum34库不再与标准库兼容.该库也是不必要的,因此您只需卸载它即可.
pip uninstall -y enum34
Run Code Online (Sandbox Code Playgroud)
如果您需要在<= 3.4和> 3.4的python版本上运行代码,您可以尝试将其enum-compat作为一项要求.它只安装enum34旧版本的python而没有标准库枚举.
小智 79
不确定你是否还有这个问题.我有一个类似的问题,我只能通过取消设置解决它PYTHONPATH
$ unset PYTHONPATH
mic*_*ckk 10
对我来说,此错误是在安装gcloud组件app-engine-python以便集成到pycharm后发生的。即使pycharm现在不上传到app-engine,卸载模块也有帮助。
安装 enum34 的 1.1.8 版对我有用。
我能够通过将 enum34 = "==1.1.8" 添加到 pyproject.toml 来解决这个问题。显然 enum34 在 v1.1.8 中有一个功能可以避免这个错误,但这在 v1.1.9+ 中倒退了。不过,这只是一种解决方法。更好的解决方案是让包使用环境标记,因此除非需要,否则您根本不必安装 enum34。
来源:https : //github.com/python-poetry/poetry/issues/1122
小智 7
如果有人在PyCharm中运行Google App Engine Python 3.7标准环境项目时由于遇到此错误而来这里,那么您要做的就是
原因是根据此链接
总体目标是您的应用程序应具有完全可移植性,并可以在任何标准Python环境中运行。您编写的是标准Python应用程序,而不是App Engine Python应用程序。作为此转变的一部分,您不再需要为应用程序的核心功能使用专有的App Engine API和服务。目前,Python 3.7运行时中不提供App Engine API。
我猜想当我们在PyCharm中将python 3.7项目创建为Google应用引擎项目时,它仍会尝试以与python2.7应用相同的方式进行操作
免责声明:请@ juanpa.arrivillaga,如果您看到此答案,请随时写自己的答案,我将删除此帖子。
@ juanpa.arrivillaga 上面已经提到:
您的工作目录中是否有文件名enum.py?
这就是我遇到的问题。当时我还不了解python上的enum模块,并已命名测试文件enum.py。
由于文件名是模块名,因此存在冲突。有关模块的更多信息,请访问:https : //docs.python.org/2/tutorial/modules.html
小智 5
H\xc3\xa5ken Lid 的回答帮助解决了我的问题(谢谢!),在我的例子中,Python3.7 在 Docker 容器中运行 Flask ( FROM tiangolo/uwsgi-nginx-flask:python3.7-alpine3.7)。
就我而言,enum34是由另一个库 ( ) 安装的pip install smartsheet-python-sdk。\n对于那些遇到类似 Docker 容器问题的人,这是我的最终 Dockerfile(删除了相关行):
FROM tiangolo/uwsgi-nginx-flask:python3.7-alpine3.7\n...\nRUN pip install -r requirements.txt\nRUN pip uninstall -y enum34\n...\nRun Code Online (Sandbox Code Playgroud)\n
我在transformers从 HuggingFace安装库时遇到了这个问题。这是因为enum34我的环境中安装了包,它覆盖了 Python 中的内置枚举。这个包可能是由某些东西安装的,因为 Python 3.6+ 不再需要向前兼容性。所以解决办法很简单,
pip uninstall -y enum34
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62861 次 |
| 最近记录: |