Flask和uWSGI – 无法加载应用程序0(mountpoint ='')(可找不到调用或导入错误)
当我尝试使用uWSGI启动Flask时,出现以下错误。 这是我如何开始:
> # cd .. > root@localhost:# uwsgi --socket 127.0.0.1:6000 --file /path/to/folder/run.py --callable app - -processes 2
这是我的目录结构:
-/path/to/folder/run.py -|app -|__init__.py -|views.py -|templates -|static
/path/to/folder/run.py
内容
if __name__ == '__main__': from app import app #app.run(debug = True) app.run()
/path/to/folder/app/__init__.py
内容
import os from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy from flask.ext.login import LoginManager #from flaskext.babel import Babel from config import basedir app = Flask(__name__) app.config.from_object('config') #app.config.from_pyfile('babel.cfg') db = SQLAlchemy(app) login_manager = LoginManager() login_manager.setup_app(app) login_manager.login_view = 'login' login_manager.login_message = u"Please log in to access this page." from app import views *** Operational MODE: preforking *** unable to find "application" callable in file /path/to/folder/run.py unable to load app 0 (mountpoint='') (callable not found or import error) *** no app loaded. going in full dynamic mode *** *** uWSGI is running in multiple interpreter mode *** spawned uWSGI worker 1 (pid: 26972, cores: 1) spawned uWSGI worker 2 (pid: 26973, cores: 1)
uWSGI不会将您的应用程序加载为__main__
,所以它永远不会find该app
(因为只有当应用程序以名称__main__
forms运行时才会加载该应用程序)。 因此,您需要将其导入if __name__ == "__main__":
块之外。
真的很简单的变化:
from app import app if __name__ == "__main__": app.run()
现在你可以直接用python run.py
来运行应用程序,或者通过uWSGI来运行它。
我接受的解决scheme的问题,因为我的烧瓶应用程序是在一个variables称为app
。 你可以通过把这个放在你的wsgi中来解决这个问题:
from module_with_your_flask_app import app as application
所以问题就在于uwsgi需要一个名为application
的variables。