首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flask和uWSGI -无法加载应用0(装入点=‘’)(未找到可调用或导入错误)

Flask和uWSGI -无法加载应用0(装入点=‘’)(未找到可调用或导入错误)
EN

Stack Overflow用户
提问于 2012-08-20 07:30:50
回答 3查看 57.9K关注 0票数 72

当我尝试使用uWSGI启动Flask时,我得到了下面的错误。下面是我如何开始的:

代码语言:javascript
复制
>  # cd ..
>     root@localhost:# uwsgi --socket 127.0.0.1:6000 --file /path/to/folder/run.py --callable app -  -processes 2

下面是我的目录结构:

代码语言:javascript
复制
-/path/to/folder/run.py
      -|app
          -|__init__.py
          -|views.py
          -|templates
          -|static

/path/to/folder/run.py的内容

代码语言:javascript
复制
if __name__ == '__main__':
   from app import app
   #app.run(debug = True)
   app.run()

/path/to/folder/app/__init__.py的内容

代码语言:javascript
复制
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)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-20 07:46:05

uWSGI不会以__main__的身份加载你的应用程序,所以它永远不会找到app (因为只有当应用程序以__main__的身份运行时才会加载)。因此,您需要将其导入到if __name__ == "__main__":块之外。

非常简单的改变:

代码语言:javascript
复制
from app import app as application  # for example, should be app

if __name__ == "__main__":
    application.run()

现在您可以直接使用python run.py运行该应用程序,也可以按您所拥有的方式通过uWSGI运行它。

注意:如果设置了--callable myapp,则需要将其从as application更改为myapp (默认情况下,uwsgi需要application

票数 52
EN

Stack Overflow用户

发布于 2015-08-18 06:23:08

我对被接受的解决方案有问题,因为我的flask应用程序在一个名为app的变量中。您可以通过在您的wsgi中添加以下内容来解决此问题:

代码语言:javascript
复制
from module_with_your_flask_app import app as application

所以问题很简单,uwsgi需要一个名为application的变量。

票数 196
EN

Stack Overflow用户

发布于 2019-07-19 19:13:28

如果我遗漏了以下Flask应用程序的最小工作示例的最后两行,则会出现uWSGI错误unable to load app 0 (mountpoint='') (callable not found or import error)

代码语言:javascript
复制
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello world!"

if __name__ == "__main__":
    app.run()
else:
    application = app

我知道这已经在评论中含蓄地说到了另一个答案,但我还是花了一段时间才弄明白,所以我希望节省别人的时间。

在纯Python Dash应用程序的情况下,我可以提供以下最小可行的代码片段:

代码语言:javascript
复制
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div( html.H1(children="Hello World") )

application = app.server

if __name__ == "__main__":
    app.run_server(debug=True)

同样,application = app.server是这里最重要的部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12030809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档