如何调试 Flask 应用
- 2024-12-06 08:40:00
- admin 原创
- 88
问题描述:
如何在 Flask 中调试错误?打印到控制台?在页面上闪现消息?或者是否有更强大的选项可用于找出发生错误时发生了什么?
解决方案 1:
在调试模式下运行应用程序将在出现错误时在浏览器中显示交互式回溯和控制台。从 Flask 2.2 开始,要在调试模式下运行,请将--app
和--debug
选项传递给flask
命令。
$ flask --app example --debug run
在 Flask 2.2 之前,这是由FLASK_ENV=development
环境变量控制的。你仍然可以使用FLASK_APP
和FLASK_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=True
给app.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
。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件