Точки останова не попадают в VS Code при отладке приложения Python Flask

Я новичок в разработке 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/отладка

Репо для справки: https://github.com/iamshivprasad/analytics

Структура клонированных папок:

- Development
  - .vscode
    - launch.json
  - analyticspyengine
    - analytics_modules
    - controllers
    - datainterfaces
    - utils
    - __init__.py
    - analyticsservices.py
    - webapp.py
    .
    .
    .

Я могу успешно запустить программу с указанными ниже настройками в файле 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
    }

Содержимое webapp.py

#!/usr/bin/python3
import sys
from . import app   
from . import analyticsservices

Содержание analyticspyengine/__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__) 

Я сталкиваюсь со следующими проблемами. Полная беспомощность и разочарование!!!

1) Выполнение не достигает точек останова

2) После запуска приложения с указанными выше настройками я не могу остановить службу. т. е. даже после остановки отладчика приложение работает. Я вижу, что запросы обслуживаются через вывод терминала и Postman. Процесс кажется живым, пока VS Code не будет закрыт.

Может ли кто-нибудь пролить свет?

Это было опубликовано в github.com/Microsoft/vscode-python/issues/4355 . Там есть потенциальное решение.

Brett Cannon 15.02.2019 02:13
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
1
7 044
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, включение автоматической перезагрузки (путем удаления флага --no-reload) приводит к тому, что отладчик VS Code больше не работает. Парни из кода VS говорят, что работают над этим: https://github.com/Microsoft/vscode-python/issues/4355.

Итак, на данный момент вы должны добавить флаги «no-reload» и «no-debugger» в раздел аргументов launch.json.

Эта конфигурация 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
}

Подробнее здесь.

Спасибо! Я был сбит с толку, потому что мне нужен был отладчик, а не отладчик FLASK. Отключите отладчик Flask с помощью аргумента --no-debugger и дайте возможность работать отладчику VS Code. Хороший

Sean McCarthy 23.02.2020 23:30

Похоже, они повторно представили подобную ошибку в vscode 1.50, и это творило чудеса :)

JBSnorro 17.11.2020 13:55

по какой-то причине мне пришлось удалить «FLASK_DEBUG»: «0», а также перезапустить визуальный код, после чего он начинает попадать в точку отладки.

dawncode 03.06.2021 11:05

Другие вопросы по теме