如何在VSCode中Debug(带有参数,name、program、$file、args、pickArgs、指定虚拟环境)

news/2025/11/27 19:19:09/文章来源:https://www.cnblogs.com/trmbh12/p/19279203

如何在VSCode中带有参数的Debug(name、program、$file、args、pickArgs、指定虚拟环境)

0. 省流

{"version": "0.2.0","configurations": [{"name": "调试train.py文件","type": "debugpy","request": "launch","program": "train.py","console": "integratedTerminal","python": "/home/leovin/anaconda3/envs/wsl/bin/python","args": ["--weights","weights/yolov5s.pt","--cfg","models/yolov5s.yaml"]}]
}

其中:

  • "name":debug配置的名称(任意)
  • "program":要debug的文件("${file}" 为当前打开的文件)
  • "python":使用的虚拟环境的 Python 路径;
  • "args"
    • "args": ["参数1", "参数2", ...]:传入固定参数
    • "args: "${command:pickArgs}":运行后再填写参数,没有则直接回车

1. 问题

在使用 VSCode 进行 Debug 时,如果程序没有额外的参数要求,那我们直接在右上角点击 Debug 即可开始调试。但如果我们的程序需要传入指定的参数才能正常运行,那么直接点击右上角的 Debug 按钮是不行的。

以 YOLOv5 为例,我们想要在 Debug 的时候传入一些参数,如:

python train.py \--weights weights/yolov5s.pt \--cfg models/yolov5s.yaml \--data data/coco.yaml\--img 640 \--device 0 \--project runs/train \--name exp

相关代码片段:

def generate_individual(input_ranges, individual_length):individual = []for i in range(individual_length):lower_bound, upper_bound = input_ranges[i]individual.append(random.uniform(lower_bound, upper_bound))return individualdef run(**kwargs):# Usage: import train; train.run(data='coco128.yaml', imgsz=320, weights='yolov5m.pt')opt = parse_opt(True)for k, v in kwargs.items():setattr(opt, k, v)main(opt)return optif __name__ == "__main__":opt = parse_opt()main(opt)

2. 使用 launch.json 进行调试

2.1 launch.json 文件的创建

如果我们直接点击右上角的 debug 按钮,程序使用的是默认的配置,这与我们的需求不合。我们可以使用 “Python调试程序:使用 launch.json 进行调试”,之后点击“添加配置”,此时 VSCode 会自动创建一个 launch.json 文件:

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Python 调试程序: 包含参数的当前文件","type": "debugpy","request": "launch","program": "${file}","console": "integratedTerminal","args": "${command:pickArgs}"}]
}

2.2 launch.json 关键字说明

关键字 作用
// Json 文件的注释 (可以删除)
"version" 调试配置文件的版本
"configurations" 包含了所有的调试配置的数组
"name" 调试配置的名称,在 VSCode 的调试侧边栏中显示,区分不同的调试配置
"type" 调试器的类型(通常是 "python" 或者 "debugpy"
"request" 启动模式("launch" 用于启动一个新的程序,而 "attach" 用于附加到已经运行的程序)
"program" 要调试的程序的路径
"args" 传递给程序的命令行参数的数组

2.2.1 “name” 关键字说明

"name" 关键字并不是要调试的文件的名称,而是调试配置的名称,所以我们可以任意写:

{"version": "0.2.0","configurations": [{"name": "调试当前文件","type": "debugpy","request": "launch","program": "${file}","console": "integratedTerminal","args": "${command:pickArgs}"},{"name": "调试train.py文件","type": "debugpy","request": "launch","program": "train.py","console": "integratedTerminal","args": ["--weights","weights/yolov5s.pt","--cfg","models/yolov5s.yaml"]}]
}

上面我们就有了两个不同的配置,侧栏中可以任意切换。

2.2.2 “program” 关键字说明

"program" 关键字才是要调试的文件的名称,默认为 "${file}",表示 VSCode 编辑器当前打开的文件。

2.2.3 “args” 关键字说明

"args" 关键字是我们想要传入的参数,默认是 "${command:pickArgs}",它允许用户在启动调试会话之前通过一个命令界面来选择或输入命令行参数。

我们也可以直接用数组写入我们要传入的参数:

{"version": "0.2.0","configurations": [{"name": "调试train.py文件","type": "debugpy","request": "launch","program": "train.py","console": "integratedTerminal","args": ["--weights","weights/yolov5s.pt","--cfg","models/yolov5s.yaml"]}]
}

2.3 示例

利用这些关键字,我们可以自定义如何调试程序,比如我们想要传入参数即可按下面进行:

{"version": "0.2.0","configurations": [{"name": "调试train.py文件","type": "debugpy","request": "launch","program": "${file}","console": "integratedTerminal","args": ["--weights","weights/yolov5s.pt","--cfg","models/yolov5s.yaml"]}]
}

我们直接在侧栏进行调试,会发现程序虽然带有 --weights weights/yolov5s.pt --cfg models/yolov5s.yaml,但 debug 程序直接后就停止了。这是因为我们的 launch.json 文件中的 "program" 关键字是 "${file}",即 debug 程序会对当前文件进行 debug,但我们当前的文件是 launch.json 文件,所以程序就停止了。

那么为了让其可以正常调试我们的 train.py 文件,我们选择该文件后再启用 debug,此时 debug 正常开启。

其实我们还有一个方法,那就是让 "program" 关键字写死:

{"version": "0.2.0","configurations": [{"name": "调试train.py文件","type": "debugpy","request": "launch","program": "train.py","console": "integratedTerminal","args": ["--weights","weights/yolov5s.pt","--cfg","models/yolov5s.yaml"]}]
}

这样无论我们打开哪个文件,直接在侧栏 debug 都是对 train.py 文件进行 debug。

2.4 如何在 debug 前进入指定虚拟环境

2.4.1 〔⭐方法1〕利用 “python ” 关键字

我们可以使用 "python" 关键字直接指定使用的 Python 路径:

{"version": "0.2.0","configurations": [{"name": "调试train.py文件","type": "debugpy","request": "launch","program": "train.py","console": "integratedTerminal","python": "/home/leovin/anaconda3/envs/wsl/bin/python","args": ["--weights","weights/yolov5s.pt","--cfg","models/yolov5s.yaml"]}]
}

💡 Tips:我们可以使用下面的命令查看 Python 的路径:

conda activate env_name  # 先激活我们的虚拟环境
which python # 在 macOS 或 Linux 上
where python # 在 Windows 上

2.4.2 〔方法2〕在运行终端手动切换环境

  1. 首先我们先运行一遍 launch.json 的 debug,之后我们停止(打断);
  2. 之后我们手动激活虚拟环境:conda activate env_name
  3. 最后我们再运行 launch.json 的 debug。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/978890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析:Android Cursor AI实践技巧

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C# 中的安全零拷贝

C#中使用Span或者ReadOnlySpan实现安全零拷贝操作英文链接Safe zero-copy operations in C#C# 中的安全零拷贝 Sedat Kapanoglu 塞达特卡帕诺卢 29 Sep 2025 My attempt at talking about one of the most underrated …

适合应届生:零经验专业简历模板TOP4

对于即将踏入职场的应届毕业生而言,最头疼的莫过于“零经验”这一挑战。如何在简历中巧妙展现自身潜力,赢得HR的青睐?选择一款合适的简历制作工具显得尤为重要。 本文将为您盘点值得应届生信赖的四大简历模板工具,…

Proofpoint Satori威胁情报代理正式登陆Microsoft Security Copilot平台

Proofpoint宣布其Satori新兴威胁情报代理正式在Microsoft Security Copilot平台上线。该代理整合了全球分布式传感器网络和第三方威胁数据源,帮助安全团队快速识别被主动利用的漏洞并优先修复,提升基于风险的漏洞管理…

经济学数据如何优化员工体验的技术实践

文章探讨了如何运用经济学数据和科学模型分析员工行为模式,通过数据驱动方法优化人力资源政策,包括保险参与率分析和空间政策影响评估等技术手段。经济学数据如何为更公平的员工体验提供支持 作为全球规模最大、最多…

2025年简约智能家居照明灯品牌推荐,让生活更智能

在现代家居生活中,简约智能家居照明灯已成为提升家居氛围的重要元素。选择可靠的照明灯工厂和优质的供应商,能帮助消费者获得更高性价比的产品。本篇文章将推荐2025年最佳的智能家居照明灯品牌。通过深入分析各大厂家…

AT_fps_24_a お菓子

显然设生成函数 \(F(x)=x+x^3+x^4+x^6\),然后答案就是 \([x^n]F(x)^D\)。 \((x+x^3+x^4+x^6)^D=x^D(1+x^2+x^3+x^5)^D=x^D(1+x^2)^D(1+x^3)^D\)

NOIP 2025 游记(?

NOIP 2025 游记(?以下是博客签名,正文无关 本文来自博客园,作者:Wy_x,转载请在文首注明原文链接:https://www.cnblogs.com/Wy-x/p/19279179 版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许…

[论文阅读] AI | 大语言模型服务框架服务级目标和系统级指标优化研究

[论文阅读] AI | 大语言模型服务框架服务级目标和系统级指标优化研究pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

2025年11月治鼻炎产品推荐:高性价比解决方案与市场热门排行榜

随着环境污染和气候变化加剧,鼻炎已成为影响大众生活质量的常见问题。许多用户在选择治鼻炎产品时面临诸多困惑,包括产品安全性、适用人群、疗效持久性等关键因素。根据行业数据分析,当前鼻炎治疗产品市场呈现多元化…

2025年11月地膜、农膜、塑料薄膜源头厂商最新推荐榜单:三光膜、大棚膜、水池布优质供应商选择指南

随着设施农业的快速发展,农膜、水池布等高分子覆盖材料成为提升作物品质与农业效益的关键。为破解地膜、农用塑料薄膜市场 “品质参差、选品困难” 痛点,本次榜单基于技术创新力、产品效能、地域适配性三大维度,结合…

蓝牙音频协议——安卓开发

协议 AVRCP(Audio Vidoe Remote Control Protocol,音频视频远程控制协议),区分为CT(Control)和TG(Target)两端,TG就是受控端。A2DP(Advenced Audio Distribution Profile,即蓝牙音频传输模型协定),和音频模型一样…

2025年Q4痔疮膏品牌哪家好?TOP10测评榜单,内痔便血/外痔肉球/术后修护全适配推荐

一、行业背景与测评体系核心说明 (一)行业背景:高患病率下的用药困局 据《2025中国肛肠健康管理白皮书》披露,我国痔疮患者已达6.7亿,25-50岁职场人群患病率突破85%,学生党患病率较5年前上升23%,呈现“高基数、…

2025年11月治鼻炎产品推荐:一份详尽的清单与选择指南

随着气候变化和环境污染加剧,鼻炎已成为困扰各年龄段人群的常见健康问题。根据国家卫生健康委员会2024年发布的慢性呼吸系统疾病调研数据,我国过敏性鼻炎患病率呈逐年上升趋势,尤其在春秋季节高发。许多鼻炎患者面临…

GitHub 热榜项目 - 日榜(2025-11-01) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

成为中国中小制造业企业数字营销领域的引领者 ——纪实西安动力无限的信息化赋能之路

在数字经济浪潮奔涌向前的今天,如何让扎根于实体、承载着就业与创新的中小制造业企业,搭上互联网快车,实现品牌突围与市场拓展,是一个关乎区域经济乃至国家产业发展的重要课题。在西北重镇西安,一家名为“动力无限…