如何在VS Code中调试Flask App

dem*_*gra 5 python flask visual-studio-code

我一直试图让调试器在VS Code中工作,以便可以调试Flask App。我尝试了太多的选择,launch.json以至于我觉得自己已经一无所有。

以下示例不起作用:https : //github.com/DonJayamanne/pythonVSCode/wiki/Debugging : -Flask

在Visual Studio代码中调试Flask(Python)Web应用程序

以下是我launch.jsonsetting.json。当我尝试多种变体时,启动文件中有两种配置。

launch.json

"version": "0.2.0",
    "configurations": [
    {
        "name": "Flask",
        "type": "python",
        "request": "launch",
        "stopOnEntry": false,
        "pythonPath": "${config:python.pythonPath}",
        //"module": "flask.cli",
        "program": "${workspaceRoot}/startup.py",
        "cwd": "${workspaceRoot}",
        "env": {
          "FLASK_APP": "${workspaceRoot}/apt-flask.py",
        },
        "args": [
          "run",
          "--no-debugger",
          "--no-reload"
        ],
        "envFile": "${workspaceRoot}/.env",
        "debugOptions": [
          "WaitOnAbnormalExit",
          "WaitOnNormalExit",
          "RedirectOutput"
        ]
    },
    {
        "name": "Python: APT FLask",
        "type": "python",
        "request": "launch",
        "stopOnEntry": true,
        "pythonPath": "${workspaceFolder}/venv/Scripts/python.exe",
        //"program": "${workspaceFolder}/venv/Scripts/flask.exe",
        "module": "flask.cli",
        "cwd": "${workspaceFolder}",
        "env": {
            "FLASK_APP": "${workspaceFolder}/apt-flask.py",
            "DEBUG": 1,
            "LC_ALL": "en_US.utf-8",
            "LANG": "en_US.utf-8"
        },
        "args": [
            "run",
            "--no-debugger",
            "--no-reload"
        ],
        "envFile": "${workspaceFolder}/.env",
        "debugOptions": [
            "WaitOnAbnormalExit",
            "WaitOnNormalExit",
            "RedirectOutput"
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

settings.json

{
    "python.pythonPath": "${workspaceRoot}/venv/Scripts/python.exe"
}
Run Code Online (Sandbox Code Playgroud)

至于错误,控制台中没有错误,只有编辑器中的错误告诉我“调试适配器进程已意外终止”。

我不确定还有什么尝试。我目前使用Pycharm,但是我正在寻找一种更轻便的编辑器,并且由于我将VS Code用于其他用途,因此有必要进行更改,因此最终使它正常工作将是一件很不错的事情。

任何帮助都是很棒的。

Spe*_*er5 7

截至 2019 年 11 月,我发现以下内容有用:

新方式(基本和不稳定)-“旧方式”下面更好

假设一个简单的 app.py 例如:

import flask
app = flask.Flask(__name__)
@app.route('/')
def index():
    return "Hello world!"
Run Code Online (Sandbox Code Playgroud)

通过从“调试资源管理器”下拉列表中添加“Python Flask 调试配置”,将 .vscode/launch.json 添加到您的项目中。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Flask",
            "type": "python",
            "request": "launch",
            "module": "flask",
            "env": {
                "FLASK_APP": "app.py",
                "FLASK_ENV": "development",
                "FLASK_DEBUG": "1"
            },
            "args": [
                "run",
                "--no-debugger",
                "--no-reload"
            ],
            "jinja": true
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Flask 应用程序可以通过 VS Code 调试器 [F5] 以“新方式”有效运行。

python -m flask run
Run Code Online (Sandbox Code Playgroud)

老方法(更好)

Miguel 建议以旧方式运行应用程序并使用附加标志,在 VS Code 调试器中效果更好。

将以下内容添加到 app.py(从上面):

if __name__ == '__main__':
    app.run(use_debugger=False, use_reloader=False, passthrough_errors=True)
Run Code Online (Sandbox Code Playgroud)

修改 .vscode/launch.json 如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Flask",
            "type": "python",
            "request": "launch",
            "module": "app",
            "env": {
                "FLASK_APP": "app.py",
                "FLASK_ENV": "development",
                "FLASK_DEBUG": "1"
            },
            "args": [
                // "run",
                // "--no-debugger",
                // "--no-reload"
            ],
            "jinja": true
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

因此,Flask 应用程序实际上是通过 VS Code 调试器 [F5] 以“旧方式”运行。

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