Visual Studio代码:使用参数运行python文件

时间:2017-04-30 09:08:30

标签: python debugging visual-studio-code

有没有简单的方法在VS代码中使用参数运行python文件?

我知道我可以使用launch.json关键字在args文件中添加自定义配置。然而,每次修改launch.json都很烦人,因为我想使用不同的参数。

8 个答案:

答案 0 :(得分:2)

一种解决方法是让脚本要求命令行参数(在内部VSCode控制台中)。

通过依靠readline可以使此方法更加有用,它可以使您执行诸如按向上箭头键循环显示先前命令(命令历史记录)等操作。一个例子:

import argparse, readline

def main():
  # ask for additional command line arguments if needed (for VSCode)
  parser = argparse.ArgumentParser()
  parser.add_argument('--interactive', action='store_true', default=False)
  (args, rest) = parser.parse_known_args()
  if args.interactive:
    try: readline.read_history_file()
    except: pass
    rest += input("Arguments: ").split(" ")  # get input args
    try: readline.write_history_file()
    except: pass

  # your other script arguments go here
  parser.add_argument("-output-dir", default="/out")
  # ...
  args = parser.parse_args(rest)

  print(args)

if __name__ == "__main__":
  main()

然后只需将VSCode设置为始终传递--interactive参数,即使设置断点,脚本也将始终要求提供参数(带有历史记录!)。

答案 1 :(得分:1)

您可以添加自定义任务来执行此操作。这涉及tasks.json。您可以为项目(项目文件夹)添加默认的tasks.json文件。跟着这些步骤。键盘按 Ctrl + Shift + B 它将提示以下弹出窗口

enter image description here

单击Configure Build Task如果已经在以下位置创建了自定义tasks.json .vscode/tasks.json编辑器将打开它,如果不是,它将提供已有任务运行者的建议的下拉列表。

我们的目的是为我们的项目创建一个自定义tasks.json,以便创建一个我们需要从下拉列表中选择Others选项。查看下面的截图。

enter image description here

选择Others选项后,您会看到默认的tasks.json将从项目的根目录创建到以下位置.vscode/tasks.json以下是tasks.json的示例< / p>

enter image description here

现在编辑tasks.json以支持Python。

  1. 将Command属性从"echo"更改为"Python"
  2. 将showOutput保持为"Always"
  3. 将参数(参数)从["Hello World"]更改为["${file}"](文件名)
  4. 删除最后一个属性problemMatcher

  5. 将isShellCommand和版本属性保持不变

  6. 保存所做的更改

  7. 您现在可以打开py文件并使用快捷键 Ctrl + Shift + B 很好地运行它。

答案 2 :(得分:1)

您将需要以编程方式更改文件或使用其他参数复制/粘贴另一个配置文件。


以下是针对其他所有人的说明,请点击DEBUG窗格中的Config按钮:

enter image description here

单击它,它将创建带有调试配置的launch.json文件。编辑此文件,并以以下密钥对格式添加 args

{
    // 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 (Integrated Terminal)",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "args": [
                "--username", "Jeremy",
                "--account", "Stackoverflow"
            ],
            "console": "integratedTerminal"
        },
        {

在Python脚本中放置一个断点,例如在def main(...)下的第一行,然后按F5或单击“开始调试”。

答案 3 :(得分:0)

如果您的项目中没有task.json文件,则可以按Ctrl + Shift + B组合键创建一个新文件,然后选择显示的第一个选项,然后将其替换为下面的

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "run python with argument",
            "type": "shell",
            "command": "python PROGRAM_NAME.py ARG1 ARG2 ...",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}  

否则,在您现有的task.json中添加以上配置。

在上述配置中将PROGRAM_NAME替换为您的程序名称和ARG1 ARG2 ...指示您的特定参数。

毕竟,您可以使用CTRL + SHIFT + B执行创建的任务,然后选择新的“使用参数运行python”任务。

答案 4 :(得分:0)

如果您使用的是虚拟环境,请确保使用该环境的Python解释器的完整路径。

答案 5 :(得分:0)

另一个选择是您可以通过以下方式从命令行运行python程序

python3 -m debugpy --wait-for-client --listen localhost:5678 myprogram.py

然后,您可以使用Python: Remote Attach launch.json配置连接到该程序。这意味着每次打开程序都需要执行额外的步骤:在CLI上运行该程序,然后附加调试器,但这确实使指定参数更加流畅。

为使事情变得更加简单,您可以将上述内容放在bash脚本中,并将args从CLI传递到python:

start.sh "my arg that changes all the time"

然后通过“远程附加”进行附加。

答案 6 :(得分:0)

我一直在寻找此处描述的问题的解决方案,但认为任何答案都不够,因此我创建了一个 debugpy-run 实用程序来解决它。

如果您安装了 VS Code Python 扩展,那么完整的 debugpy 调试器已经与它捆绑在一起。该实用程序会找到 debugpy 的安装路径,然后在侦听模式下为您指定的程序和参数运行它。使用 Python“远程连接”调试配置(使用默认主机和端口设置)从 VS Code 中连接到它。对于每次调试运行,您只需 -RunLevel,然后使用 shell 历史记录和命令行编辑工具重新运行带有更改参数的命令。

答案 7 :(得分:-1)

也许这可以满足您的要求:在%PATH%中创建一个指向python.exe的python.bat文件:

C:\Users\joecoder\AppData\Local\Programs\Python\Python37\python.exe %*

然后使用vscode终端窗口(您可以从vscode顶部的“终端”选项卡中打开一个新窗口)将目录更改为.py文件所在的目录,然后正常运行:

PS C:\Users\joecoder> cd vscode\python
PS C:\Users\joecoder\vscode\python> python test.py 1 2 3

当然,这是在vscode之外运行的,因此请确保在编辑后写出更改,并且必须使用print()样式调试。