关于python:Gunicorn导入错误:在烧瓶中找不到url_for,但是原生烧瓶运行正常

Gunicorn import error: url_for not found in flask, but native flask run works fine

我可以使用flask的内置web服务器命令run()运行flask应用程序,但在尝试使用gunicorn运行应用程序时,收到以下导入错误。我使用主文件夹中的gunicorn project.app:app命令。

从views.py中抛出的错误是:

1
from app import db, url_for ImportError: cannot import name url_for

我的应用程序组织如下:

1
2
3
4
5
6
7
8
mainfolder/
    Procfile
    bin
    project/
        app.py
        _config.py
        views.py
        run.py

Py

1
2
3
4
from views import app
import os
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)

App.Py

1
2
3
4
5
6
7
8
9
10
11
12
13
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
import os
app = Flask(__name__)
app.config.from_pyfile('_config.py')
db = SQLAlchemy(app)
app.config['SECRET_KEY'], report_errors=False)

from views import *

if __name__ == '__main__':
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)

_配置PY

1
2
import os
#All the app's keys

程序文件

1
2
3
4
5
#this works fine
web: python project/run.py

#this doesn't work
web: gunicorn project.app:app

python project/app.py运行应用程序很好,那么为什么gunicorn project.app:app抛出模块importError?


你的url输入需要在app = Flask(__name__)之前

您的应用程序正在Flask的服务器上工作,因为在

1
2
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=port)

声明。gunicorn正在为导入url_之前获取应用程序。