vscode配置flask自动reload、redebug

当我们在写flask框架的时候经常会遇到出现bug,然后需要修改的情形,每一次修改完都要手动debug一次,相当麻烦,我们想要在vscode里面像pycharm一样打开实时debug模式,看了网上许多博客之后发现还没有能解决我的问题的解决方案。在阅读了官方文档之后我总结出了我的方法,仅供大家参考。

以下面的app为例:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == '__main__':
    app.run(host='localhost', port=5000,debug = True)

常见错误情形:
直接按f5,进入debug configuration下拉菜单,选择Flask,指定app的相对路径(app的文件名),运行,会发现控制台给出如下提示:
(注:工作文件路径和文件名都是我在自学数学建模的时候随便指定的)

C:\Users\Administrator\Desktop\python\建模学习\flask> cmd /C "python c:\Users\Administrator\.vscode\extensions\ms-python.python-2020.6.91350\pythonFiles\lib\python\debugpy\launcher 64212 -- -m flask run --no-debugger --no-reload "
 * Serving Flask app "from flask import Flask.py"
 * Environment: development
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

这样显然不行,因为每次修改都需要重新debug、reload才能在浏览器看到我们的修改,相当麻烦,这也是我们本次需要改进的地方。

一次无效的尝试

接下来我针对控制栏返回的Debug mode: off进行调整。查阅资料知此问题与调试的配置文件有关,因此我决定针对launch.json文件进行修改。

在左侧工具栏点击第四个选项卡“运行”,点击“打开文件夹”,选择当前.py文件所在的文件夹,打开。
点击“打开文件夹”
随后左侧就跳转到了资源管理器:
资源管理器
按F5,在弹出的debug configuration下拉菜单下选择“Flask”:flask
键入文件名(实际上,这是指定环境中的FLASK_APP参数):文件名
回车,就进入了debug界面,并自动生成了一个launch.json文件,其代码如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Flask",
            "type": "python",
            "request": "launch",
            "module": "flask",
            "env": {
                "FLASK_APP": "from flask import Flask.py",
                "FLASK_ENV": "development",
                "FLASK_DEBUG": "0"
            },
            "args": [
                "run",
                "--no-debugger",
                "--no-reload"
            ],
            "jinja": true
        }
    ]
}

一开始我只是修改了参数"FLASK_DEBUG": "1",返回进行debug,控制栏提示如下:

C:\Users\Administrator\Desktop\python\建模学习\flask> cmd /C "D:\ProgramData\Ana
conda3\python.exe c:\Users\Administrator\.vscode\extensions\ms-python.python-202
0.6.91350\pythonFiles\lib\python\debugpy\launcher 49241 -- -m flask run --no-deb
ugger --no-reload "
 * Serving Flask app "from flask import Flask.py"
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

这次返回Debug mode: on,难道是成功了?测试了一下并不是,我先在浏览器打开http://127.0.0.1:5000/,在vscode下修改了hello函数的返回值为’Hello World111’之后,Ctrl+S保存,返回浏览器刷新,发现页面并未发生变化,说明并没有达到reload、redebug的目的,这样的配置是无效的。

正确配置launch.json文件

我又查阅了官方文档,发现应该在开发模式下运行flask的服务器,随后我重新配置的launch.json文件如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Flask",
            "type": "python",
            "request": "launch",
            "module": "flask",
            "env": {
                "FLASK_APP": "from flask import Flask.py",
                "FLASK_ENV": "development",

            },
            "args": [
                "run"

            ],
            "jinja": true
        }
    ]
}

删去了三个参数。这样我保存了launch.json文件,返回程序并按F5调试之,控制栏提示如下:

C:\Users\Administrator\Desktop\python\建模学习\flask> cmd /C "D:\ProgramData\Anaconda3\python.exe c:\Users\Administrator\.vscode\extensions\ms-python.python-2020.6.91350\pythonFiles\lib\python\debugpy\launcher 49716 -- -m flask run "
 * Serving Flask app "from flask import Flask.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Restarting with windowsapi reloader
 * Debugger is active!
 * Debugger PIN: 259-529-969
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

显然,这次不仅打开了debug mode,还提示激活了debugger,这一次我打开http://127.0.0.1:5000/,在vscode直接修改hello函数的返回值,Ctrl+S保存,返回浏览器刷新,发现可以实时呈现修改结果了,也就是实现了修改后自动reload、redebug,完美还原了pycharm中的情形。事实上,这个操作不仅激活了debugger,还激活了windowsapi reloader,这样我们的目的就达成了。

总结:
方法优点:解决了vs code下flask不能自动reload、redebug的问题;
方法不足:每次都要针对不同app重新编写launch.json文档,迁移性差。

注: 写的仓促,可能会有些错误和写的不太清楚的地方,欢迎大家指正。^ ^

官方文档: Python debug configurations in Visual Studio Code
注:这里面与flask有关的配置参数解析有点难找,最好借助页面搜索关键字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值