首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在VS代码中调试Flask应用程序

如何在VS代码中调试Flask应用程序
EN

Stack Overflow用户
提问于 2018-03-08 10:43:00
回答 1查看 6.1K关注 0票数 10

我一直试图让调试器在VS代码中工作,这样我就可以调试我的Flask应用程序了。我在launch.json中尝试了太多的选项,以至于我觉得已经没有任何选择了。

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

Debug Flask(Python) web application in Visual studio code

下面是我的launch.jsonsetting.json。我在启动文件中有两个配置,因为我尝试了多个变体。

launch.json

代码语言:javascript
复制
"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"
        ]
    }
]

settings.json

代码语言:javascript
复制
{
    "python.pythonPath": "${workspaceRoot}/venv/Scripts/python.exe"
}

就错误而言,控制台中没有错误,只有编辑器中的错误,它告诉我"Debug适配器进程意外终止“。

我不知道还能尝试什么。我目前使用Pycharm,但是我正在寻找一个更轻量级的编辑器,而且由于我在其他方面使用VS代码,所以更改它是有意义的,所以最好能最终实现这个功能。

任何帮助都是很棒的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-12 22:19:24

截至2019年11月I发现下列有用之处:

新路(基本与松散)-下面的“旧路”更好

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

代码语言:javascript
复制
import flask
app = flask.Flask(__name__)
@app.route('/')
def index():
    return "Hello world!"

通过从Debug中添加Python配置,将..vscode/unch.json添加到项目中。

代码语言:javascript
复制
{
    // 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
        }
    ]
}

Flask应用程序有效地运行了VS代码调试器F5中的“新方法”。

代码语言:javascript
复制
python -m flask run

旧方式(更好)

Miguel建议,在VS代码调试器中,用旧的方式运行应用程序,再加上额外的标志,会更好。

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

代码语言:javascript
复制
if __name__ == '__main__':
    app.run(use_debugger=False, use_reloader=False, passthrough_errors=True)

修改..vscode/unch.json如下所示:

代码语言:javascript
复制
{
    // 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
        }
    ]
}

因此,Flask应用程序有效地运行了VS代码调试器F5中的“旧方式”。

代码语言:javascript
复制
python app.py
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49171144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档