Чтение ввода во время отладки в 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
- Нажмите значок отладки
, чтобы открыть боковую панель отладки
- В верхней части экрана убедитесь, что выбран "Python: Текущий файл". Вам может потребоваться выбрать его или создать его (может потребоваться создать первую конфигурацию отладки/запуска):
![enter image description here]()
- Щелкните значок шестерни справа от раскрывающегося списка конфигурации, выбранного на предыдущем шаге. Это вызовет файл launch.json для этой конфигурации в редакторе.
- Обновите опцию
"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, когда код приостановлен для ввода команд отладки.