Flask 未激活调试模式

Ale*_*ejo 8 python debugging flask

我正在开始使用 Flask,我正在尝试学习一些教程,但是我一直无法在调试模式下运行 Flask 应用程序。

我尝试了我找到的最简单的代码:

from flask import Flask
app = Flask(__name__)

app.debug = True
# I have also tried with a configuration
# app.config.from_object('config')
# file with constant
# DEBUG = True

@app.route('/')
def hello_world():
    return 'Hello World!'
Run Code Online (Sandbox Code Playgroud)

然后我跑

export FLASK_APP=hello_world.py
flask run
Run Code Online (Sandbox Code Playgroud)

但我总是得到这个输出

 * Serving Flask app "hello_world.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Run Code Online (Sandbox Code Playgroud)

当我跑步时,print(app.debug)我得到False

这是 pip freeze 的输出:

click==7.1.2
Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
Werkzeug==1.0.1
Run Code Online (Sandbox Code Playgroud)

我有 python 3.8.2

小智 14

我已经尝试了以下步骤,它对我有用。

已将这些代码行添加到我的app.py文件中。

if __name__ == "__main__":
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

然后我使用命令行从终端运行该程序

python3 app.py
Run Code Online (Sandbox Code Playgroud)

它起作用了。

请找到下面的截图

在此输入图像描述

  • @Xonshiz `flask run` 将 `app.py` 作为模块运行,因此 `__name__ != "__main_"`。该命令直接运行文件,因此 `__name__ == "__main__"`。 (3认同)

Sal*_*lah 7

如果您使用的是 Windows,只需在终端中键入以下内容:
在 PowerShell 中:

$env:FLASK_ENV = "development"
flask run
Run Code Online (Sandbox Code Playgroud)

在命令提示符下:

C:\path\to\app>set FLASK_ENV=development
flask run
Run Code Online (Sandbox Code Playgroud)

对于 Mac,你可能需要运行这个:

$ export FLASK_ENV=development
$ flask run
Run Code Online (Sandbox Code Playgroud)

享受 !!


Shi*_*il 0

  • 确保您正在运行正确的程序,有时我们会在其他程序中进行更改并运行其他程序。
  • 还要确保设置 app.debug = True 与设置 FLASK_DEBUG 模式完全不同。

试试这个,这对我有用。

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == "__main__":
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)