2012-01-19 3 views
2

eclipse + PyDev에서 프로그래밍하고 Flask 프레임 워크를 사용하는 중에 IDE에서 자동 구성 가져 오기 기능 (Ctrl + O과 함께 호출 됨)이 때때로 발생하는 것으로 나타났습니다.PyDev가 특정 가져 오기를 이동하지 못하도록

이것은 Flask가보기 코드를 여러 모듈 또는 패키지로 분할해야하는 방식과 관련이 있습니다.

from myapp import app 

@app.route('/') 
def root(): 
    return "Hello world" 

하고 플라스크 응용 프로그램은 __init__.py에 정의되어 있습니다 : 당신이 당신의 요청 처리기를 포함하는 views.py 모듈이있는 경우 기본적으로

from flask import Flask 

app = Flask('MyApp') 
app.config.from_pyfile('config.py') 

@app.before_request 
def before_request(): pass # omitted for brevity 

@app.teardown_request 
def teardown_request(): pass # omitted for brevity 

당신은 후자 파일의 끝에 import views필요 Flask의 라우팅 테이블에 뷰 기능이 추가되었습니다. views.py__init__.py을 수입하여 app 변수에 액세스하므로 순환 수입이 발생합니다. 그것은 잘 작동하지만 사실은 확정 된 연습입니다 suggested by documentation입니다.

불행히도 PyDev는이 기술에 대해 아무것도 모릅니다. 우리가 우연히 __init__.py (보통이 옵션이 얼마나 유용한가를 감안할 때 흔하지 않음)을 위해 수입을 조직해야하는 경우, PyDev는 행복하게 중요한 import views을 행복하게 움직일 것입니다. 물론 잘못된 (irresolvable) 순환 가져 오기 및 성가신 런타임 오류가 발생합니다.

#@Directive 같은 특정 가져 오기를 그대로두고 PyDev에 알려주는 것처럼 파일을 기반으로 가져 오기 구성을 해제하는 등의 방법이 있습니까?

답변

1

저는 PyDev를 사용하지 않지만 가져 오기 구문 분석기를 던져 보았습니까? 어쩌면 PyDev의 그것을 통해 전달합니다 라인이 "가져 오기"로 시작하지 않기 때문에

if 1: import views 

: 이것은 더러운,하지만 당신은 뭔가를 시도 할 수?

+0

이 해결 방법은 PyDev에서 작동합니다 ... 나는 그것이 사용되어야하는 이유보다 덜 부정하다고 말해야합니다. 즉, 순환 수입을 해결하는 것입니다 : –

+0

그것은 그러한 해결책뿐만 아니라 'sys.path' 조작과 같은 더 많은 유형의 "import hacks". – Xion

관련 문제