如何调试 Flask 应用

2024-12-06 08:40:00
admin
原创
88
摘要:问题描述:如何在 Flask 中调试错误?打印到控制台?在页面上闪现消息?或者是否有更强大的选项可用于找出发生错误时发生了什么?解决方案 1:在调试模式下运行应用程序将在出现错误时在浏览器中显示交互式回溯和控制台。从 Flask 2.2 开始,要在调试模式下运行,请将--app和--debug选项传递给fla...

问题描述:

如何在 Flask 中调试错误?打印到控制台?在页面上闪现消息?或者是否有更强大的选项可用于找出发生错误时发生了什么?


解决方案 1:

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

$ flask --app example --debug run

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

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

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

对于 Windows CMD,使用set而不是导出:

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 或其他终端调试器。


确保不要使用范围过广的 except 块。用 catch-all 包围所有代码try... except...将使您想要调试的错误消失。一般来说这是不必要的,因为 Flask 已经通过显示调试器或 500 错误并将回溯打印到控制台来处理异常。

解决方案 2:

您可以使用app.run(debug=True)下面提到的Werkzeug 调试器 编辑,我应该知道。

解决方案 3:

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

解决方案 4:

还可以使用Flask Debug Toolbar扩展来获取嵌入在呈现的页面中的更多详细信息。

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

解决方案 5:

如果你使用的是 Visual Studio Code,请替换

app.run(debug=True)

app.run()

当打开内部调试器时会禁用 VS Code 调试器,就会出现这种情况。

解决方案 6:

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

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

启用 flask 应用的调试器后,几乎所有错误都会打印在控制台或浏览器窗口上。如果您想弄清楚发生了什么,可以使用简单的打印语句,也可以对 javascript 代码使用 console.log()。

解决方案 7:

当运行 aspython app.py而不是flask命令时,您可以传递debug=Trueapp.run

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

解决方案 8:

要在 flask 中激活调试模式,您只需在Windows 或Linux 终端set FLASK_DEBUG=1上输入,然后重新启动您的应用程序就可以了!CMD`export FLASK_DEBUG=1`

解决方案 9:

在您的虚拟环境中安装python-dotenv

在项目根目录中创建一个 .flaskenv。项目根目录指的是包含 app.py 文件的文件夹

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

FLASK_APP=myapp 
FLASK_ENV=development

现在发出以下命令:

flask run

解决方案 10:

使用虚拟环境激活

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)

解决方案 11:

对于 Windows 用户:

打开 Powershell 并进入您的项目目录。

在 Powershell 中使用这些命令,其他所有东西在 Powershell 中都无法使用。

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

解决方案 12:

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

解决方案 13:

您可以使用安装python
-dotenvpip install python-dotenv然后创建一个 .flask_env或一个.env文件该文件的内容可以是:

FLASK_APP=myapp
FLASK_DEBUG=True

解决方案 14:

除了其他答案之外,如果您仍然没有看到日志消息,则可能需要调整应用程序记录器的级别:

app.logger.setLevel(logging.DEBUG)

@app.route('/'):
def index():
    app.logger.info('Request made')
    ...

我相信日志级别默认为WARNING

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   990  
  在项目管理领域,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节,它不仅验证了项目团队的专业能力,还直接关系到项目的成功与否。在这一评审过程中,沟通技巧的运用至关重要。有效的沟通不仅能够确保信息的准确传递,还能增强团队协作,提升评审效率。本文将深入探讨CDCP...
华为IPD流程   26  
  IPD(Integrated Product Development,集成产品开发)是一种以客户需求为核心、跨部门协同的产品开发模式,旨在通过高效的资源整合和流程优化,提升产品开发的成功率和市场竞争力。在IPD培训课程中,掌握关键成功因素是确保团队能够有效实施这一模式的核心。以下将从五个关键成功因素展开讨论,帮助企业和...
IPD项目流程图   27  
  华为IPD(Integrated Product Development,集成产品开发)流程是华为公司在其全球化进程中逐步构建和完善的一套高效产品开发管理体系。这一流程不仅帮助华为在技术创新和产品交付上实现了质的飞跃,还为其在全球市场中赢得了显著的竞争优势。IPD的核心在于通过跨部门协作、阶段性评审和市场需求驱动,确保...
华为IPD   26  
  华为作为全球领先的通信技术解决方案提供商,其成功的背后离不开一套成熟的管理体系——集成产品开发(IPD)。IPD不仅是一种产品开发流程,更是一种系统化的管理思想,它通过跨职能团队的协作、阶段评审机制和市场需求驱动的开发模式,帮助华为在全球市场中脱颖而出。从最初的国内市场到如今的全球化布局,华为的IPD体系在多个领域展现...
IPD管理流程   53  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用