我有一个使用 MongoEngine 的小型 Flask 应用程序。
我的项目结构:
/myproject
-application.py
-config.py
/my_app
-models.py
-views.py
我的应用程序.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)
我的模型.py:
from application import db
from flask import url_for
# declare model classes
...
我正在部署heroku。如果我的 Procfile 读取:
web: python application.py
它工作正常。当我尝试切换到 Gunicorn 时:
web: gunicorn application:app
当我启动 gunicorn 时,它会通过导入错误来抱怨:
ImportError: cannot import name db
为什么现在这是一个问题?我猜这是一个路径问题,但我不明白为什么会这样。