Чтение ввода во время отладки в Python с помощью VSCode

Вот расширение для Python, которое я использовал в коде vs: расширение Python.

Когда я использую функцию отладки, предоставляемую расширением, оно будет зависать и ничего не делать, если ему потребуется ввод из командной строки.

Где я могу ввести значения, чтобы перешагнуть через оператор ввода в коде vs?

Ответ 1

трюк, чтобы заставить это работать, находится на расширении (Don Jayamanne Python). Вы должны включить "externalConsole": true в свой launch.json файл "name": "Python".

Вики-страница расширения подтверждает, что по умолчанию это не работает:

Это позволяет осуществлять захват ввода из окна консоли/терминала приложений, что невозможно в стандартном отладчике VSCode.

Вот шаги, которые помогут вам это сделать:

  • В окне отладки (Ctrl + Shift + D) нажмите значок маленькой шестерни, чтобы открыть (или сгенерировать) файл launch.json. Он помещается в каталог .vscode в той папке, которую вы выбрали в качестве "открытой папки" в коде VS.
  • Вам нужно добавить параметр pythonPath в первый блок конфигурации. Это необходимо для работы отладчика вообще.
  • Вам также нужно добавить параметр externalConsole в тот же блок. Это то, что необходимо, чтобы отладчик принимал ввод. При отладке отдельное окно открывается вне кода VS, но в противном случае работает хорошо.
  • После добавления обеих настроек блок должен выглядеть примерно так. Мне не пришлось ничего менять в остальной части файла launch.json.

    {
        "name": "Python",
        "type": "python",
        "request": "launch",
        "stopOnEntry": true,
        "program": "${file}",
        "pythonPath": "C:/Users/igor/Documents/Tools/WinPython-32bit-3.4.3.7Slim/python-3.4.3/python.exe",
        "externalConsole": true,
        "debugOptions": [
            "WaitOnAbnormalExit",
            "WaitOnNormalExit",
            "RedirectOutput"
        ]
    },
    

Ответ 2

Директива externalconsole устарела. Используйте console вместо этого и укажите ваше предпочтение внешнему:

"console": "externalTerminal"

Выход приложения (и ввод) перейдет в отдельное окно, чтобы консоль отладки VS Code оставалась чистой подсказкой python, где вы можете оценивать материал во время контрольных точек.

Ответ 3

VS Code имеет возможность отладки с помощью консоли Python.

Просто нажмите Ctrl + Shift + D и рядом с синим значком воспроизведения нажмите стрелку вниз и выберите Python Console App вместо просто Python, например:

enter image description here

Ответ 4

Параметр console может иметь любое из этих значений: internalConsole, integratedTerminal, externalTerminal.

Обычно, если вы запускаете отладчик, и программа останавливается, он оставляет внешний терминал, отображающий приглашение Press Enter to continue . . . для доступа к любому выходу программы. Если вы случайно получили синтаксическую ошибку, внешний терминал просто закрывается, не оставляя никакого сообщения.

При использовании параметра integratedTerminal терминал остается там и отображает сообщение об ошибке.

Пока я не знаю, является ли эта внешняя внешняя вещь ошибкой или нет, в этом случае функция IntegratedTerminal работает намного лучше.

Ответ 5

В коде Visual Studio щелкните список выбора справа от зеленой стрелки. Затем выберите Python: Terminal (внешний). Когда вы запустите свой script, он будет запущен во внешнем окне и позволит вам вводить ввод.

Ответ 6

Измените файл launch.json и вставьте его в свой код Java.

{
    "type": "java",
    "name": "Debug (Launch)",
    "request": "launch",
    "cwd": "${workspaceFolder}",
    "console": "externalTerminal",
    "stopOnEntry": false,
    "mainClass": "",
    "args": ""
}

Ответ 7

Это помечено как P2 на GitHub. Вы можете проголосовать за этот вопрос на Github.

GitHub Issue

Ответ 8

Вы можете выбрать внутреннюю или внешнюю настройку терминала и использовать ввод с клавиатуры во время отладки. Инструкции по настройке и доступные параметры приведены ниже.


Открытие файла конфигурации отладки launch.json

  1. Нажмите значок отладки enter image description here, чтобы открыть боковую панель отладки
  2. В верхней части экрана убедитесь, что выбран "Python: Текущий файл". Вам может потребоваться выбрать его или создать его (может потребоваться создать первую конфигурацию отладки/запуска): enter image description here
  3. Щелкните значок шестерни справа от раскрывающегося списка конфигурации, выбранного на предыдущем шаге. Это вызовет файл launch.json для этой конфигурации в редакторе.
  4. Обновите опцию "console": до одной из настроек, описанных ниже enter image description here

Допустимые настройки "console" в launch.json

  • "console": "internalConsole"

    • это настройка по умолчанию
    • использует внутреннюю консоль отладки
    • по состоянию на 10/2019 не разрешен ввод с клавиатуры.
  • "console": "integratedTerminal"

    • это порождает новое окно терминала Python Debug Console каждый раз, когда вы отлаживаете (я хотел бы, чтобы он повторно использовал любой существующий, но это не так - используйте символ корзины в правом верхнем углу окна терминала, чтобы удалить старые, неиспользуемые терминалы)
    • Тип создаваемого терминала зависит от установленного вами типа терминала по умолчанию (например, окно команд, оболочка bash и т.д.).
    • Все стандартные выходные данные будут в этом терминале, и вы можете ввести ввод с клавиатуры, если программа ожидает его.
    • Вы можете переключиться на вкладку DEBUG CONSOLE, если хотите выполнить команду во время отладки. enter image description here
  • "console": "externalTerminal"

    • это порождает отдельный терминал вне процесса VS Code в качестве терминала для запуска вашего кода при запуске или отладке.
    • внешний терминал будет типом по умолчанию для вашей ОС (командное окно для Windows 10).
    • этот терминал отделен от кода VS и обычно добавляет подсказку Press any key to continue... после завершения вашей программы, чтобы вы могли просматривать/копировать любой вывод до его исчезновения.
    • Все стандартные выходные данные будут передаваться на этот терминал, и в него можно будет вводить ввод с клавиатуры.
    • Вы можете переключиться на DEBUG CONSOLE в VS Code, когда код приостановлен для ввода команд отладки.