python如何run和debug程序

目录

前言:

一、文件生成

二、文件配置

1.设置运行参数和解释器

2.设置工作空间路径

(1)第一种

(2)第二种重构工作空间路径


前言:

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

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

一、文件生成

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

二、文件配置

1.设置运行参数和解释器

复制代码
{
  "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。

python 复制代码
# 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,直接调试这个程序

2.设置工作空间路径

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

文件树如下

(1)第一种

这里我们指名了

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

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

javascript 复制代码
{
  "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",
    },
    
  ]
}

(2)第二种重构工作空间路径

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

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

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

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

java 复制代码
{
  "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",
    },
    
  ]
}

三、调试技巧

1.在vscode如何运行到光标处?

在想要运行到的位置打断点,之后点击继续运行。F5

相关推荐
高级程序源4 小时前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
WeiXin_DZbishe4 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
kimnoic5 小时前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
snhna5 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
必须得开心呀6 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
Wx-bishekaifayuan6 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
青少儿编程课堂6 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
计算机编程指导师6 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
Wx-bishekaifayuan6 小时前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
WeiXin_DZbishe7 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计