Mac에서 Flask 서버를 로컬로 실행하고 있습니다.상대 가져 오기를 사용하려고 시도했는데 가져 오기 경로가 손상 되었습니까?
내 프로젝트 :
project/my_lib/my_class.py
project/testing/flask_server.py
project/testing/something/test_class.py
한 시점에서, 나는 어떤 상대 수입은 다른 디렉토리에 클래스를 테스트하기 위해 함께 멋진 가려고 :
프로젝트 에서/테스트/일/test_class.py :
from ..my_lib.my_class import MyClass
나에게 오류를 준 :
나는 새로운 수입 코드를 제거하더라도,ValueError: Attempted relative import beyond toplevel package
그래서 나는 그 외에서는 지원하지만, 지금은 를 실행하는 내 플라스크 서버를 얻을 수 없습니다.
Traceback (most recent call last):
File "testing/flask_server.py", line 2, in <module>
from flask import Flask
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/flask/__init__.py", line 17, in <module>
from werkzeug.exceptions import abort
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/werkzeug/__init__.py", line 154, in <module>
__import__('werkzeug.exceptions')
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/werkzeug/exceptions.py", line 71, in <module>
from werkzeug.wrappers import Response
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/werkzeug/wrappers.py", line 26, in <module>
from werkzeug.http import HTTP_STATUS_CODES, \
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/werkzeug/http.py", line 28, in <module>
from urllib.request import parse_http_list as _parse_list_header
ImportError: No module named request
허 :
$ python testing/flask_server.py
이 밖으로 뱉어?
UPDATE :
플라스크를 가져 오기 오류는 잘못된 코드가 처음 호출 된 디렉토리에 발생합니다. 나는 어디서나 프로젝트/테스트 디렉토리에에서
from flask import Flask
을 할 경우 즉, 내가 가져 오기 오류가,하지만 난 내 시스템에 다른 곳 프로젝트/에서 할 경우 나, 괜찮아. .?
솔루션 (PARTLY) :
내가 이런 일이 이유에 대한 설명이없는,하지만 난 그것을 해결하기 위해 다음과 같은 않았다
- 을 새로운 을 만든 testing/ 디렉토리에 복사하고 이전 파일을 파일에 복사합니다. 이전 테스트/ 디렉토리를 삭제해야했습니다. 기본적으로 손상되었습니다.
- 상대 경로 대신 절대 경로를 사용하여 내 교차 디렉터리를 가져 왔습니까?
은 (그건 그렇고, 내가 상대 가져 오기 오류를 재현하는 나의 단계를 되돌아 시도했지만 할 수 없습니다, 그래서 나는이 모든 일의 원인이나 해결책 중 하나의 확실하지 않다.)
감사합니다.이게'print urllib2 .__ file__' yeilds :'/ Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.pyc'입니다. 로컬이 아니며 가져 오기 오류가 발생하기 전에 작동했던 것과 동일한 코드를 실행하고 있습니다. 그래서 이전에 작동중인 코드가 지금 왜 고장 났는지, 그리고 어떻게 해결해야하는지에 대해서는 여전히 불분명합니다. – Yarin
'from urllib2 import ...'라인을 시도해 본다. –
'from urllib2 import ...'라인은 에러가 아니다. (왜'from urllib.request import ...'라인이 호출 되더라도 ?!) – Yarin