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

时间:2016-08-20 16:37:55

标签: python visual-studio-code

如何配置visual studio代码以调试Flask(Python)Web应用程序?

例如,当我在视图函数上设置调试器时,它应该允许我在浏览器中点击该路径时单步执行该函数。

我已经在Visual Studio代码中安装了python扩展。

8 个答案:

答案 0 :(得分:6)

这是我对flask 0.12,Python 3.6和vs code 1.20

的配置
// launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Flask",
            "type": "python",
            "request": "launch",
            "stopOnEntry": false,
            "pythonPath": "${config:python.pythonPath}",
            "program": "${workspaceRoot}/app.py",
            "env": {
                "FLASK_APP": "${workspaceRoot}/app.py"
            },
            "args": [
                "run"
            ],
            "envFile": "${workspaceFolder}/.env",
            "debugOptions": [
                "RedirectOutput"
            ]
        }
    ]
}

# app.py file
app.run(port=5000)
# Don't use debug=True, because it disables VS CODE debugger
# app.run(port=5000, debug=True) - disables VS Code debugger

答案 1 :(得分:2)

我不使用VS进行python开发。但是,Flask有非常好的调试选项,允许您从浏览器进行调试。这不是VS的解决方案,而是一种解决方法。

定义应用程序时传递#### With spaces: line = '<a href="foo"> foo </a>' re.findall(r'>\s*(\w*)\s*<',line) ### ['foo'] #### No spaces: line = '<a href="foo">foo</a>' re.findall(r'>\s*(\w*)\s*<',line) ### ['foo'] 参数以启用调试模式。然后,您可以从浏览器调试代码。

debug = true

可以找到更多信息here

答案 2 :(得分:2)

1)使用以下代码

在项目根目录中创建startup.py

# Needed to start debugger for flask app in Visual Studio Code IDE import sys import re from flask.cli import main sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(main())

2)通过浏览到Debug选项卡(左窗格)然后单击设置图标(Gear图标),在Visual Studio Code中更新launch.json文件。向下滚动到&#34; FLASK&#34;部分:

a)将"program"值更改为"${workspaceRoot}/startup.py"
b)将"FLASK_APP"值更改为"${workspaceRoot}/run.py"(或者您的主要入口点文件为&#34;

3)转到文件 - &gt;首选项 - &gt;设置,然后点击右上角的工作区设置。插入以下字段"python.pythonPath": "${workspaceRoot}/venv/Scripts/python.exe"(如果您的虚拟环境的名称不是venv,则将其替换为适当的值

答案 3 :(得分:2)

我发现以下解决方案对我有用。我遵循了官方教程,对生成的 launch.json 文件进行了一些调整。

Visual Studio Code official flask tutorial debugging section

我的设置是:

  • Python 3.8.3
  • 烧瓶1.1.2
  • Visual Studio代码1.46.0

我当前的 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"  // make sure it is not "0"
            },
            "args": [
                "run",
               // "--no-debugger", Comment out this line
               // "--no-reload"  Comment out this line
            ],
            "jinja": true
        }
    ]
}

默认情况下,生成的 launch.json 文件具有

  • “ FLASK_DEBUG”:“ 0”
  • “-无调试器”
  • “-无需重新加载”

行,这使我无法调试。

答案 4 :(得分:1)

我们可以使用Linux的第一个答案( Ubuntu )以及下面的修改。

在VSC中添加flask调试的配置。您将从添加按钮获得。它将如下所示。

{ "name": "Flask", "type": "python", "request": "launch", "stopOnEntry": false, "pythonPath": "${config:python.pythonPath}", "program": "${workspaceRoot}/app.py", #your start py file "env": { "FLASK_APP": "${workspaceRoot}/app.py" #your start py file }, "args": [ "run" //--no-debug and one more line removed. ], "envFile": "${workspaceFolder}/.env", "debugOptions": [ "RedirectOutput" ] }

步骤2.转到文件 - &gt; 偏好设置 - &gt; 设置,然后点击工作区设置右上角的标签。插入以下字段"python.pythonPath": "${workspaceRoot}/venv/bin/python2.7",(如果您的虚拟环境被命名为venv以外的其他内容,则将其替换为适当的值

答案 5 :(得分:0)

为了进一步扩展Guy先生的回答,我必须使用Anaconda 2在Windows环境中为visual studio代码配置调试器。我这样做是通过以下方式实现的:

{
"python.pythonPath": "C:\\ProgramData\\Anaconda2\\envs\\neuralnets\\python.exe"
}

神经网络是我的anaconda 2虚拟环境

答案 6 :(得分:0)

如果您使用的是venv,请确保您拥有virtual environment configured in VS Code

  

用于常规调试功能,例如检查变量,设置   断点和其他与语言无关的活动,   查看VS Code debugging

您的launch.json文件应如下所示:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Flask",
      "type": "python",
      "request": "launch",
      "stopOnEntry": false,
      "pythonPath": "${config:python.pythonPath}",
      "module": "flask.cli",
      "cwd": "${workspaceRoot}",
      "env": {
        "FLASK_APP": "sample",
        "LC_ALL": "en_US.utf-8",
        "LANG": "en_US.utf-8"
      },
      "args": [
        "run",
        "--no-debugger",
        "--no-reload"
      ],
      "envFile": "${workspaceRoot}/.env",
      "debugOptions": [
        "WaitOnAbnormalExit",
        "WaitOnNormalExit",
        "RedirectOutput"
      ]
    }
  ]
}


FLASK_APP环境变量设置为您的应用文件的名称。
设置--no-debugger以避免与Werkzeug调试器发生任何潜在冲突。

答案 7 :(得分:0)

Microsoft已添加该教程来创建用于Flask调试的启动配置:Flask Tutorial -> Run the app in the debugger
因此,不久您必须有一个类似于

的部分
{
    "name": "Python: Flask",
    "type": "python",
    "request": "launch",
    "module": "flask",
    "env": {
        "FLASK_APP": "app.py",
    },
    "args": [
        "run",
        "--no-debugger",
        "--no-reload"
    ],
    "jinja": true
},

launch.json中,其中app.py是Flask应用程序运行程序文件。之后,您必须在Visual Studio Code的下拉菜单中选择适当的配置设置,例如: The Selector!
之后,只需点击F5并开始您的“旅程”即可!