第一次用VSCode调试Python脚本时,我也习惯性直接点右上角的调试按钮。直到遇到需要传入命令行参数的场景——比如用YOLOv5训练模型时,必须指定weights、cfg等参数文件路径,直接调试根本跑不起来。这时候就需要launch.json这个调试配置文件来帮忙了。
launch.json相当于调试器的"食谱",告诉VSCode:
没有它就像让厨师做菜不给菜谱,只能做最简单的家常菜。举个例子,调试深度学习项目时常见的痛点:
通过合理配置launch.json,可以实现:
在VSCode中按F5启动调试时,如果项目没有launch.json文件,会提示创建。更推荐手动创建:
基础模板长这样:
json复制{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}
关键字段说明:
version:配置版本号,固定0.2.0configurations:调试配置数组name:配置显示名称(在调试下拉菜单中可见)type:调试器类型,Python用debugpyrequest:launch表示启动新进程program:要调试的文件,${file}表示当前打开的文件以YOLOv5的train.py为例,需要传入参数才能运行。修改args字段:
json复制{
"name": "训练YOLOv5模型",
"type": "debugpy",
"request": "launch",
"program": "train.py",
"args": [
"--weights", "yolov5s.pt",
"--cfg", "models/yolov5s.yaml",
"--data", "coco128.yaml",
"--batch-size", "16"
]
}
参数传递的两种方式:
"args": "${command:pickArgs}",调试时会弹出输入框实测建议:固定参数用方式1,频繁变化的参数用方式2
当项目需要特定虚拟环境时,通过python字段指定解释器绝对路径:
json复制{
"python": "/opt/miniconda3/envs/yolov5/bin/python",
"args": ["--weights", "yolov5s.pt"]
}
获取路径的方法:
which pythonwhere python建议将路径设为相对路径(如"${workspaceFolder}/venv/bin/python"),方便团队共享配置
通过env字段设置环境变量,比如指定GPU:
json复制{
"env": {
"CUDA_VISIBLE_DEVICES": "0,1",
"TF_CPP_MIN_LOG_LEVEL": "2"
}
}
常见使用场景:
当需要同时调试多个关联进程时,使用compounds配置:
json复制{
"version": "0.2.0",
"configurations": [...],
"compounds": [
{
"name": "客户端+服务端",
"configurations": ["启动服务端", "启动客户端"],
"preLaunchTask": "初始化环境"
}
]
}
典型应用场景:
在launch.json中配置调试器特性:
json复制{
"stopOnEntry": true,
"showReturnValue": true,
"logToFile": true
}
实用技巧:
调试远程服务器代码的配置示例:
json复制{
"name": "远程调试",
"type": "debugpy",
"request": "attach",
"host": "192.168.1.100",
"port": 5678,
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/remote/path"
}
]
}
操作步骤:
python -m debugpy --listen 5678 --wait-for-client train.py特殊配置项:
json复制{
"type": "debugpy",
"request": "launch",
"program": "${file}",
"notebook": "embedded",
"justMyCode": false
}
注意事项:
调试复杂项目时,最痛苦的不是写代码,而是反复修改参数重启调试。用好launch.json就像拥有了调试瑞士军刀,最近在做一个计算机视觉项目时,我设置了5种不同的参数组合配置,通过下拉菜单一键切换,效率提升非常明显。