调试 Python Flask 应用程序时,VS Code 中没有出现断点

iam*_*hiv 5 python flask visual-studio-code vscode-debugger

我是 Python Flask 开发和 VS Code 的新手。我一直在尝试通过参考以下教程来创建应用程序。

https://code.visualstudio.com/docs/python/tutorial-flask

https://github.com/Microsoft/python-sample-vscode-flask-tutorial \

https://code.visualstudio.com/docs/python/debugging

回购参考:https : //github.com/iamshivprasad/analytics

克隆的文件夹结构是:

- Development
  - .vscode
    - launch.json
  - analyticspyengine
    - analytics_modules
    - controllers
    - datainterfaces
    - utils
    - __init__.py
    - analyticsservices.py
    - webapp.py
    .
    .
    .
Run Code Online (Sandbox Code Playgroud)

我能够使用launch.json中的以下设置成功启动程序。

     {
        "name": "Python: Flask",
        "type": "python",
        "request": "launch",
        "module": "flask",
        "env": {
            "FLASK_APP": "analyticspyengine.webapp",
            "FLASK_DEBUG": true,
            "FLASK_ENV": "development"
        },
        "args": [
            "run"
        ],
        "jinja": true
    }
Run Code Online (Sandbox Code Playgroud)

webapp.py 的内容

#!/usr/bin/python3
import sys
from . import app   
from . import analyticsservices
Run Code Online (Sandbox Code Playgroud)

分析pyengine/的内容__init__.py

#!/usr/bin/python3
import sys, os
sys.path.insert(0, os.path.join(os.path.dirname(__file__)))

from flask import Flask
app = Flask(__name__) 
Run Code Online (Sandbox Code Playgroud)

我面临以下问题。完全无助和沮丧!!!

1) 执行没有遇到任何断点

2) 使用上述设置启动应用程序后,我无法停止服务。即,即使在停止调试器后,该应用程序似乎仍在运行。我可以看到请求是通过终端输出和邮递员提供的。在 VS Code 关闭之前,该过程似乎一直存在。

有人可以解释一下吗?

Mar*_*scu 11

看起来像打开自动重新加载(通过删除“--no-reload”标志),使 VS Code 调试器不再工作。VS 代码人员说他们正在研究它:https : //github.com/Microsoft/vscode-python/issues/4355

因此,目前,您应该在 launch.json args 部分中添加“no-reload”和“no-debugger”标志。

这个 launch.json 配置将使 VS Code 调试器工作:

{
    "name": "Python: Flask",
    "type": "python",
    "request": "launch",
    "module": "flask",
    "env": {
        "FLASK_APP": "application.py",
        "FLASK_ENV": "development",
        "FLASK_DEBUG": "0"
    },
    "args": [
        "run",
        "--no-debugger",
        "--no-reload"
    ],
    "jinja": true
}
Run Code Online (Sandbox Code Playgroud)

更多信息在这里