방금 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가 발생하는 이유는 무엇입니까?
답변
enum
표준 라이브러리 enum
모듈 이 아니기 때문 입니다. 패키지가 enum34
설치되어 있을 것입니다 .
이것이 사실인지 확인하는 한 가지 방법은 속성을 검사하는 것입니다. enum.__file__
import enum
print(enum.__file__)
# standard library location should be something like
# /usr/local/lib/python3.6/enum.py
파이썬 3.6부터 enum34 라이브러리는 더 이상 표준 라이브러리와 호환되지 않습니다. 라이브러리도 필요하지 않으므로 간단히 제거 할 수 있습니다.
pip uninstall -y enum34
Python 버전 <= 3.4 및> 3.4에서 실행하기 위해 코드가 필요한 경우 enum-compat
요구 사항으로 사용해 볼 수 있습니다 . enum34
표준 라이브러리 열거 형이없는 이전 버전의 python 에만 설치됩니다 .
답변
여전히이 문제가 있는지 확실하지 않습니다. 비슷한 문제가 있었는데 설정을 해제하면 간단히 해결할 수있었습니다.PYTHONPATH
$ unset PYTHONPATH
답변
나 에게이 오류는 pycharm에 통합하기 위해 gcloud 구성 요소 app-engine-python을 설치 한 후에 발생했습니다. pycharm이 이제 app-engine에 업로드되지 않더라도 모듈을 제거하면 도움이되었습니다.
답변
PyCharm에서 Google 앱 엔진 Python 3.7 표준 환경 프로젝트를 실행하는 동안이 오류가 발생하여 여기에 오는 사람은 다음과 같습니다.
- 실행할 구성이 Google App Engine 구성이 아닌 Flask 용인지 확인합니다.
- 그런 다음 환경 설정 >> 언어 및 프레임 워크 >> Google App Engine에서 Google App Engine 지원을 비활성화합니다.
이 링크에 따른 이유
전반적인 목표는 앱이 완전히 이식 가능하고 모든 표준 Python 환경에서 실행되어야한다는 것입니다. App Engine Python 앱이 아닌 표준 Python 앱을 작성합니다. 이러한 변화의 일환으로 더 이상 앱의 핵심 기능을 위해 독점 App Engine API 및 서비스를 사용할 필요가 없습니다. 현재 App Engine API는 Python 3.7 런타임에서 사용할 수 없습니다.
PyCharm에서 Google 앱 엔진 프로젝트로 python 3.7 프로젝트를 만들 때 여전히 python2.7 앱과 동일한 방식으로 수행하려고 시도합니다.
답변
면책 조항 : @ juanpa.arrivillaga,이 답변이 보이면 언제든지 직접 작성해 주시면이 게시물을 제거하겠습니다.
@ juanpa.arrivillaga 는 위에서 언급했습니다 .
혹시 작업 디렉토리에 enum.py 파일 이름이 있습니까?
이것이 내가 만난 문제였습니다. 나는 당시 파이썬의 enum 모듈을 인식하지 못했고 내 테스트 파일의 이름을 지정했습니다 enum.py
.
파일 이름 이 모듈 이름이므로 충돌이 발생했습니다. 모듈에 대한 자세한 정보는 https://docs.python.org/2/tutorial/modules.html을 참조 하십시오.
답변
pycharm 환경 설정에서 “Google App Engine 지원”을 비활성화하면이 문제가 해결되었습니다.
답변
Håken Lid의 답변은 내 문제를 해결하는 데 도움이되었습니다 (감사합니다!). 제 경우에는 Docker 컨테이너에서 Flask를 실행하는 Python3.7에 있습니다 ( FROM tiangolo/uwsgi-nginx-flask:python3.7-alpine3.7
).
제 경우에는 enum34
다른 라이브러리 ( pip install smartsheet-python-sdk
) 에서 설치 중이었습니다 . 유사한 Docker 컨테이너 문제가 발생하는 사람들을 위해 다음은 내 마지막 Dockerfile입니다 (관련 줄로 분리됨).
FROM tiangolo/uwsgi-nginx-flask:python3.7-alpine3.7
...
RUN pip install -r requirements.txt
RUN pip uninstall -y enum34
...