2013-04-25 9 views
1

안녕하세요, 저는 MongoEngine을 사용하는 작은 플라스크 (Frank) 앱을 보유하고 있습니다.Heroku의 Flask 및 Gunicorn 가져 오기 오류

내 프로젝트 구조 :

/myproject 
    -application.py 
    -config.py 
    /my_app 
    -models.py 
    -views.py 

내 application.py :

#!/usr/bin/env python 
from flask.ext.mongoengine import MongoEngine 
from config import app 
import os 
app.debug = True 

# get config settings 
if __name__ == '__main__': 
    app.config.from_object('config') 
else: 
    app.config.from_object('heroku_config') 

# wrap app in mongengine 
db = MongoEngine(app) 

if __name__ == '__main__': 
    # Bind to PORT if defined, otherwise default to 5000. 
    port = int(os.environ.get('PORT', 5000)) 
    app.run(host='0.0.0.0', port=port) 

내 models.py :

from application import db 
from flask import url_for 

# declare model classes 
... 

내가 Heroku가에 배포하고있다. 내 Procfile 읽는 경우 :

web: python application.py 

잘 작동합니다. 내가 Gunicorn로 전환 할 때 :

ImportError: cannot import name db 

왜 지금 문제가되는 :

web: gunicorn application:app 

내가 시작하면 그것이 가져 오기 오류의 방법으로 불만을 gunicorn? 나는 그것이 경로 문제라고 생각하고있다. 그러나 나는 왜 그렇게 볼 수 없다.

도움을 주시면 감사하겠습니다.

답변

0

청사진을 application.py에 등록하고 있다고 가정하고 모델을 가져옵니다. 맞습니까?
보기 파일을 제공하지 않았거나보기 파일을 사용하는 방법이 맞지 않습니다. 추측이 정확하지 않으면 내 대답이 아래에 표시되지 않습니다.

제 추측이 맞다면 아마 아마도 순환 가져 오기 때문일 것입니다. 당신은이 라인을 포함하는 db.py 파일 (application.py에서 이동) 만들 수 있습니다

from flask.ext.mongoengine import MongoEngine 
db = MongoEngine(app) 

을 다음 모델 (from db import db)로 해당 파일을 가져옵니다.
즉, 흐름은 app (db) -> model -> view -> app 대신 db -> model -> view -> app과 같이 표시됩니다.

순환 수입으로 모든 종류의 성가신 문제가 만들어 지므로 가능한 한 피해야합니다.

관련 문제