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。