其實我一直知道vscode可以再命令行下進行debug。
比如
python aaa.py --bb=1 --cc=2
以前的做法是 去aaa.py 寫死bb和cc
然后直接debug。
直到今天我遇到這個:
hydra
@hydra.main(version_base=None, config_name='/home/justin/Desktop/code/python_project/WASB-SBDT-main/src', config_path='configs')
def main(cfg: DictConfig
):# 進這個方法的時候,cfg里面以及把配置都放到字典了,但我不理解的是,為什么有runner 這個二維的dict存在@todoprint(OmegaConf.to_yaml(cfg))print(cfg)if cfg['output_dir'] is None:cfg['output_dir'] = HydraConfig.get().run.dirmkdir_if_missing(cfg['output_dir'])print("---------------",cfg)runner = select_runner(cfg)runner.run()
我不知道他是如何傳進來的參數。
python main.py --config-name=eval --model-path=xxxx
就更加不知道如何寫死了。
.vscode
所以要這樣處理:
.task
{"version": "2.0.0","tasks": [{"label": "Run Python Script","type": "shell","command": "python","args": ["src/main.py","--config-name=eval","dataset=basketball", "model=wasb", "detector.model_path=../wasb_basketball_best.pth.tar",],"group": {"kind": "build","isDefault": true},"problemMatcher": []}]
}
{"version": "0.2.0","configurations": [{"name": "Python: Main Debug","type": "python","request": "launch","program": "${workspaceFolder}/src/main.py","args": ["--config-name=eval", "dataset=basketball", "model=wasb", "detector.model_path=../wasb_basketball_best.pth.tar"],"console": "integratedTerminal"}]
}
args 寫上你自己的參數
然后直接f5調試即可。