pythonrun和debug程序的操作过程

Written by

in

文章目录
  • 有的时候我们有这样的需求,需要再vscode里面调试python代码,但是我们还需要为不同的文件设置不同的调试参数,如设置python解释器,设置输入参数等,下面说如何再vscode进行上述的调试和运行。 对于运行来说,虽然可以使用命令行设置解释器和输入参数,但是呢,当输入参数很大的时候,每次输入也是很麻烦,直接写道json文件里面是一劳永逸了。
  • 之后就会自动在当前工作空间下创建一个.vscode/launch.json的文件
  • 目录
    • 前言:
    • 一、文件生成
    • 二、文件配置
      • 1.设置运行参数和解释器
      • 2.设置工作空间路径
        • (1)第一种
        • (2)第二种重构工作空间路径

    有的时候我们有这样的需求,需要再vscode里面调试python代码,但是我们还需要为不同的文件设置不同的调试参数,如设置python解释器,设置输入参数等,下面说如何再vscode进行上述的调试和运行。

    对于运行来说,虽然可以使用命令行设置解释器和输入参数,但是呢,当输入参数很大的时候,每次输入也是很麻烦,直接写道json文件里面是一劳永逸了。

    之后就会自动在当前工作空间下创建一个.vscode/launch.json的文件

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "MRTA_DRL: t1.py (args)",
          "type": "debugpy",
          "request": "launch",
          // 1) 要跑的 python 文件:建议写死入口脚本
          "program": "${workspaceFolder}/t1.py",
          // 2) 工作路径(相当于你在终端 cd 到哪里再执行)
        //   "cwd": "${workspaceFolder}",
          // 3) 运行参数:等价于 python train.py --config xxx ...
          "args": ["--config", "simple_het", "--seed", "0"],
          // 4) 指定解释器(两种方式二选一)
          // 方式A:直接写解释器绝对路径(最稳)
          "python": "/home/yzh/miniconda3/envs/MRTA_DRL/bin/python",
          // 方式B:不写 python,改用 VSCode 里选的解释器(推荐日常)
          // -> Ctrl+Shift+P 选择 “Python: Select Interpreter”
          // -> 然后删掉本行 "python": "...",
          "console": "integratedTerminal",
        }
      ]
    }

    t1.py的代码如下。可以看出–config这个参数是必须的,但是我可以直接运行这个程序。快捷键就是ctrl+F5。

    # args_demo.py
    import argparse
    def parse_args():
        parser = argparse.ArgumentParser(description="MRTA Training Arguments")
        parser.add_argument(
            "--config",
            type=str,
            required=True,
            help="config name, e.g. simple_het"
        )
        parser.add_argument(
            "--seed",
            type=int,
            default=0,
            help="random seed"
        )
        return parser.parse_args()
    if __name__ == "__main__":
        args = parse_args()
        print("===== Parsed Arguments =====")
        print(f"config = {args.config}")
        print(f"seed   = {args.seed}")

    那么我直接按住快捷键,他是怎么知道我运行的是那一个文件呢?是因为下图箭头表明的位置已经指明了。

    运行结果如下

    同理,我可以按住F5,直接调试这个程序

    那么如何调试工作空间内部文件夹里面的python文件呢?一共有两种办法,第一种指名绝对路径,第二种重构工作空间路径。

    文件树如下

    这里我们指名了

    "program": "${workspaceFolder}/test_one/t2.py",

    所以可以直接找到这个文件。

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "MRTA_DRL: t1.py (args)",
          "type": "debugpy",
          "request": "launch",
          // 1) 要跑的 python 文件:建议写死入口脚本
          "program": "${workspaceFolder}/t1.py",
          // 2) 工作路径(相当于你在终端 cd 到哪里再执行)
        //   "cwd": "${workspaceFolder}",
          // 3) 运行参数:等价于 python train.py --config xxx ...
          "args": ["--config", "simple_het", "--seed", "0"],
          // 4) 指定解释器(两种方式二选一)
          // 方式A:直接写解释器绝对路径(最稳)
          "python": "/home/yzh/miniconda3/envs/MRTA_DRL/bin/python",
          // 方式B:不写 python,改用 VSCode 里选的解释器(推荐日常)
          // -> Ctrl+Shift+P 选择 “Python: Select Interpreter”
          // -> 然后删掉本行 "python": "...",
          "console": "integratedTerminal",
        },
        {
          "name": "MRTA_DRL: t2.py (args)",
          "type": "debugpy",
          "request": "launch",
          // 1) 要跑的 python 文件:建议写死入口脚本
          "program": "${workspaceFolder}/test_one/t2.py",
          // 2) 工作路径(相当于你在终端 cd 到哪里再执行)
        //   "cwd": "${workspaceFolder}",
          // 3) 运行参数:等价于 python train.py --config xxx ...
          "args": ["--config", "simple_het", "--seed", "0"],
          // 4) 指定解释器(两种方式二选一)
          // 方式A:直接写解释器绝对路径(最稳)
          "python": "/home/yzh/miniconda3/envs/MRTA_DRL/bin/python",
          // 方式B:不写 python,改用 VSCode 里选的解释器(推荐日常)
          // -> Ctrl+Shift+P 选择 “Python: Select Interpreter”
          // -> 然后删掉本行 "python": "...",
          "console": "integratedTerminal",
        },
      ]
    }

    // 1) 要跑的 python 文件:建议写死入口脚本

    "program": "${workspaceFolder}/t2.py",

    // 2) 工作路径(相当于你在终端 cd 到哪里再执行)

    "cwd": "${workspaceFolder}/test_one",

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "MRTA_DRL: t1.py (args)",
          "type": "debugpy",
          "request": "launch",
          // 1) 要跑的 python 文件:建议写死入口脚本
          "program": "${workspaceFolder}/t1.py",
          // 2) 工作路径(相当于你在终端 cd 到哪里再执行)
        //   "cwd": "${workspaceFolder}",
          // 3) 运行参数:等价于 python train.py --config xxx ...
          "args": ["--config", "simple_het", "--seed", "0"],
          // 4) 指定解释器(两种方式二选一)
          // 方式A:直接写解释器绝对路径(最稳)
          "python": "/home/yzh/miniconda3/envs/MRTA_DRL/bin/python",
          // 方式B:不写 python,改用 VSCode 里选的解释器(推荐日常)
          // -> Ctrl+Shift+P 选择 “Python: Select Interpreter”
          // -> 然后删掉本行 "python": "...",
          "console": "integratedTerminal",
        },
        {
          "name": "MRTA_DRL: t2.py (args)",
          "type": "debugpy",
          "request": "launch",
          // 1) 要跑的 python 文件:建议写死入口脚本
          "program": "${workspaceFolder}/t2.py",
          // 2) 工作路径(相当于你在终端 cd 到哪里再执行)
          "cwd": "${workspaceFolder}/test_one",
          // 3) 运行参数:等价于 python train.py --config xxx ...
          "args": ["--config", "simple_het", "--seed", "0"],
          // 4) 指定解释器(两种方式二选一)
          // 方式A:直接写解释器绝对路径(最稳)
          "python": "/home/yzh/miniconda3/envs/MRTA_DRL/bin/python",
          // 方式B:不写 python,改用 VSCode 里选的解释器(推荐日常)
          // -> Ctrl+Shift+P 选择 “Python: Select Interpreter”
          // -> 然后删掉本行 "python": "...",
          "console": "integratedTerminal",
        },
      ]
    }

    到此这篇关于python run和debug程序的操作过程的文章就介绍到这了,更多相关python run和debug程序内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • 解决在Python编辑器pycharm中程序run正常debug错误的问题
    • python使用IPython调试debug程序
    • spyder 在控制台(console)执行python文件,debug python程序方式

    站内搜索