VSCode Django Debugging: Точки останова не работают с 'debugpy', но работают с типом 'python'

При попытке отладить команду управления Django в VSCode я столкнулся с проблемой, когда при использовании типа конфигурации 'debugpy' точки останова не ставились. Однако, когда я переключился на тип конфигурации 'python', точки останова заработали, как и ожидалось.

Шаги для воспроизведения

  1. Создайте новый проект Django и приложение
  2. .
  3. Создайте простую команду управления
  4. Установите конфигурацию отладки VSCode
  5. Установите точки останова в команде управления
  6. Попробуйте отладить команду управления

Команда управления Джанго (myapp/management/commands/hello_world.py):

from django.core.management.base import BaseCommand

class Command(BaseCommand):
    help = 'Prints Hello, World!'

    def handle(self, *args, **options):
        message = "Hello, World!"  # Set a breakpoint on this line
        self.stdout.write(message)

Конфигурация отладки VSCode (.vscode/launch.json):

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Django Command (debugpy)",
            "type": "debugpy",
            "request": "launch",
            "program": "${workspaceFolder}/manage.py",
            "args": [
                "hello_world"
            ],
            "django": true,
            "justMyCode": false
        },
        {
            "name": "Django Command (python)",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/manage.py",
            "args": [
                "hello_world"
            ],
            "django": true,
            "justMyCode": false
        }
    ]
}

Ожидаемое поведение

Отладчик должен остановиться на точке останова, установленной в команде управления для обоих типов конфигурации.

Актуальное поведение

  • При "type": "debugpy" точка останова не сбивается, и команда выполняется до конца без остановки.
  • При "type": "python" точка останова срабатывает, как и ожидалось, и я могу пройти по коду.

Попытки решения

  1. Очистите все .pyc файлы и перезапустите VSCode
  2. .
  3. Убедитесь, что в VSCode выбран правильный интерпретатор Python
  4. .
  5. Убедитесь, что параметр DEBUG в Django равен True
  6. Попробовали с "justMyCode": true и "justMyCode": false

Вопрос

Почему отладчик ведет себя по-разному с типами конфигурации 'debugpy' и 'python'? Является ли это известной проблемой, и есть ли способ заставить 'debugpy' корректно работать с командами управления Django?

Любые соображения или решения будут высоко оценены!

Убедитесь, что вы установили или обновили расширение Python и расширение Python Debugger.

Debugpy был удален из расширения Python в пользу расширения Python Debugger в релизе May 2024.

Вернуться на верх