如何调试 Flask 应用程序

如何调试 Flask 中的错误?打印到控制台?网页上的闪光信息?还是有一个更强大的选择可用来弄清楚当出现问题时会发生什么?

379329 次浏览

你可以使用 app.run(debug=True)调试工具 编辑如下所述,我应该已经知道。

在调试模式下运行应用程序,当出现错误时,将在浏览器中显示交互式回溯和控制台。从 Flask 2.2开始,要在调试模式下运行,请将 --app--debug选项传递给 flask命令。

$ flask --app example --debug run

在 Flask 2.2之前,这是由环境变量控制的。您仍然可以使用 FLASK_APPFLASK_DEBUG=1来代替上面的选项。

对于 Linux,Mac,Linux 子系统的 Windows,Git Bash 的 Windows,等等:

$ export FLASK_APP=example
$ export FLASK_DEBUG=1
$ flask run

对于 WindowsCMD,使用 set代替 export:

set FLASK_DEBUG=1

对于 PowerShell,使用 $env:

$env:FLASK_DEBUG = "1"

如果您使用的是 app.run()方法而不是 flask run命令,那么传递 debug=True以启用调试模式。

无论开发模式如何,回溯也会打印到运行服务器的终端。

如果您正在使用 PyCharm、 VS Code 等,那么可以利用它的调试器逐步通过带有断点的代码。运行配置可以指向调用 app.run(debug=True, use_reloader=False)的脚本,也可以指向 venv/bin/flask脚本,并像从命令行那样使用它。您可以禁用重新加载程序,但重新加载程序将终止调试上下文,您必须再次捕获断点。

还可以通过在要开始调试的视图中调用 set_trace来使用 pdb、 Pudb 或其他终端调试器。


一定不要使用太宽,除了块。在所有代码周围使用“全部捕获”try... except...将使要调试的错误静音。通常这是不必要的,因为 Flask 已经通过显示调试器或500错误并打印回溯到控制台来处理异常。

1.1.x文档中,你可以通过导出一个环境变量到 shell 提示符来启用调试模式:

export FLASK_APP=/daemon/api/views.py  # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0

还可以使用 烧瓶调试工具栏扩展获得嵌入在呈现页面中的更详细信息。

from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
import logging


app = Flask(__name__)
app.debug = True
app.secret_key = 'development key'


toolbar = DebugToolbarExtension(app)


@app.route('/')
def index():
logging.warning("See this message in Flask Debug Toolbar!")
return "<html><body></body></html>"

申请程序如下:

FLASK_APP=main.py FLASK_DEBUG=1 flask run

如果使用 VisualStudio 代码,请替换

app.run(debug=True)

app.run()

当打开内部调试器时,将禁用 VS 代码调试器。

如果您有 PyCharm Professional,您可以创建 Flask 服务器运行配置并启用 FLASK_DEBUG复选框。转到 Run > Edit Configurations,选择或创建 Flask server配置,并启用 FLASK_DEBUG复选框。单击 OK,然后单击 run 按钮。

如果你想调试你的烧瓶应用程序,那么只需要到烧瓶应用程序所在的文件夹。不要忘记激活您的虚拟环境,并将控制台中的行更改“ mainfilename”粘贴到烧瓶主文件。

export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0

在你为烧瓶应用程序启用调试器之后,几乎每个错误都会打印在控制台或浏览器窗口上。 如果想知道发生了什么,可以使用简单的 print 语句,也可以使用 console.log ()作为 javascript 代码。

在开发环境中使用日志记录器和打印语句,可以在生产环境中进行放哨。

在虚拟环境中安装 python-dotenv

在你的项目根目录中创建一个. flaskenv

在该文件中写入以下内容:

FLASK_APP=myapp
FLASK_ENV=development

现在发出以下命令:

flask run

要在烧瓶中激活调试模式,你只需在窗口的 CMD上键入 set FLASK_DEBUG=1,或者在 Linux 终端上键入 export FLASK_DEBUG=1,然后重新启动你的应用程序,你就可以开始了! !

对于 Windows 用户:

在项目目录中打开 Powershell 和 cd。

在 Powershell 用这些突击队其他的东西在 Powershell 都不管用。

$env:FLASK_APP = "app"
$env:FLASK_ENV = "development"

虚拟环境激活

export FLASK_DEBUG=true

你可以配置

export FLASK_APP=app.py  # run.py
export FLASK_ENV = "development"

开始

flask run

结果

 * Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: xxx-xxx-xxx

如果你改变了

export FLASK_DEBUG=false


* Environment: development
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

当以 python app.py而不是 flask命令运行时,可以将 debug=True传递给 app.run

if __name__ == "__main__":
app.run(debug=True)
$ python app.py

安装 巨蟒 -dotenv时可以使用 然后创建一个 .flask_env.env文件 档案的内容可以是:

FLASK_APP=myapp
FLASK_DEBUG=True