Visual Studio代码:如何使用参数调试Python脚本

li9yvcax  于 2023-02-18  发布在  Python
关注(0)|答案(8)|浏览(234)

我使用Visual Studio代码来调试Python脚本。
this guide之后,我在launch.json文件中设置了参数:

但当我按下 Debug 时,它显示我的参数无法识别,Visual Studio代码显示:
错误:无法识别的参数

由于Visual Studio代码使用PowerShell,因此让我们使用相同的参数执行相同的文件:

所以:相同的文件,相同的路径,相同的参数。在终端中它是工作的,但在VisualStudio代码中不是。
我哪里错了?

qncylg1j

qncylg1j1#

我认为--城市和奥克兰被用来作为一个单一的论点。也许试着像这样把它们分开...

单个参数

"args": ["--city","Auckland"]

多个参数和多个值

例如:

--key1 value1 value2 --key2 value3 value4

只需将它们按顺序逐一放入args列表
"args": ["--key1", "value1", "value2", "--key2", "value3", "value4"]

bxjv4tth

bxjv4tth2#

我还注意到,如果您通过单击类似

的debug按钮来运行脚本,则参数不会传递,但是使用Run -> Start Debugging(或其快捷方式F5)则成功传递了参数。

ep6jt1vc

ep6jt1vc3#

如果单击“Debug python file”未传递参数,则在launch.json文件中添加"purpose": ["debug-in-terminal"]

{"version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Current File",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "justMyCode": true,
      "args": ["--experimentName", "Debugging"],
      "purpose": ["debug-in-terminal"]
    }
  ]
}
lsmd5eda

lsmd5eda4#

--key1 value1 value2 --key2 value3 value4

可以被传递为

"args": ["--key1=value1", "value2", "--key2=value3", "value4"]

(综合了Pawan Kumar和Chunde Huang的两个答案。)

wfveoks0

wfveoks05#

Python项目文件夹路径 .vscode 中的文件 launch.json,在Visual Studio代码F5中测试。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "args": ["c", "pwd"],
        }
    ]
}
relj7zay

relj7zay6#

在Visual Studio中,您可以通过方便而自然的方式传递多个参数:

--trail=0 --g=0 --V="HO" --save_interval=10 --verbose=True

我只是不知道为什么他们在Visual Studio代码中不支持这一点。一个接一个地列出参数是很麻烦的,而且有点愚蠢。他们只需要将参数字符串传递给Python解析器,事情就可以很容易地完成。

bxpogfeg

bxpogfeg7#

还没有人提到这一点,所以我想我可以提供一个建议,可以保存您一些时间,当然还有一些理智。我用args数组设置了我的launch.json文件,但是当我运行调试器时,我无法让我的args显示在终端中。
我所要做的就是出于某种原因退出并重新启动VS代码。然后它就像冠军一样工作了。

7gcisfzg

7gcisfzg8#

在使用args进行调试时,我遇到了另一个问题。我必须按如下方式传递args:

"args": ["--metadata-files", "../file-location/*.yml"]

参数定义如下:

parser.add_argument(
    "--metadata-files",
    required=True,
    nargs="+",
    type=Path,
    help="The metadata files (ymls)",

这可以动态地处理多个yml文件,但是当我在调试模式下运行时,我得到了错误:

OSError: [Errno 22] Invalid argument: '..\\dap-metadata\\datastores\\*.yml'

有什么办法可以解决这个问题吗?

相关问题