用VSCod在Python中调试时读取输入

2024-04-24 14:32:08 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我在vs代码中使用的python的扩展:python extension

当我使用扩展提供的调试功能时,它将挂在那里,如果需要从命令行输入,则不执行任何操作。

在哪里可以输入值来跳过vs代码中的输入语句?


Tags: 代码命令行功能extension语句vs
3条回答

不推荐使用externalconsole指令。使用console代替,并以这种方式表示您对外部的偏好:

"console": "externalTerminal"

应用程序输出(和输入)将转到一个单独的窗口,因此VS代码调试控制台仍然是一个纯python提示,您可以在其中计算断点期间的内容。

console选项可以有以下任何值:internalConsole, integratedTerminal, externalTerminal

通常,如果启动调试器,程序停止,外部终端将显示提示Press Enter to continue . . .,以便访问程序的任何输出。如果意外出现语法错误,外部终端将关闭而不留下任何消息。

当使用integratedTerminal选项时,终端会留在那里并显示错误消息。

虽然我不知道这个外部终端是不是一个bug,但integratedTerminal选项在这种情况下似乎工作得更好。

trick to getting this to work位于扩展的(Don Jayamanne's Python)wiki页面上。必须在launch.json文件的"name": "Python"部分包含"externalConsole": true设置。

扩展的wiki确认默认情况下这不起作用:

This allows for capturing of input from the console/terminal window applications, which isn't possible in the standard VSCode debugger.

下面是让它工作的步骤:

  1. 在调试窗口(Ctrl+Shift+D)中,按小齿轮图标打开(或生成)launch.json文件。它被放置在.vscode目录中,您在VS代码中选择作为“打开文件夹”的文件夹。
  2. 必须将pythonPath参数添加到第一个配置块。这是让调试器工作所必需的。
  3. 您还必须将和externalConsole参数添加到同一块中。这是让调试器接受输入所需要的。调试时,一个单独的窗口将在VS代码之外打开,但在其他情况下工作良好。
  4. 添加这两个设置后,块应该如下所示。我不需要在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"
        ]
    },
    

相关问题 更多 >