VSCode如何配置launch.json调试自定义Python命令支持断点
问题原因
- 你当前配置里的
command字段不是VSCode Python调试扩展的合法配置项,扩展不会读取该字段执行命令,因此配置不生效。 - 将启动命令放到
preLaunchTask中执行时,任务启动的是独立于调试器的子进程,调试器没有挂载到运行你项目代码的Python进程上,自然无法命中断点、执行单步调试。 pipenv run的核心作用是调用项目对应pipenv虚拟环境内的Python解释器执行后续命令,不需要把整串命令套在调试配置里,只要让调试器直接使用该虚拟环境的解释器即可。
正确配置方案
方式一:手动选择虚拟环境解释器(推荐)
- 按快捷键
Ctrl+Shift+P(macOS系统按Cmd+Shift+P)调出VSCode命令面板,执行Python: Select Interpreter命令,在列表中选中当前项目对应的pipenv虚拟环境解释器。 - 将
launch.json替换为如下配置:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Debug MyModule", "type": "python", "request": "launch", "module": "myproject.mymodule", "args": ["--count", "500"], "justMyCode": true } ] }
配置字段说明:
module:对应原命令中python -m后的模块名,等价于以模块模式启动项目args:传递给启动模块的命令行参数,按顺序以数组形式填写即可justMyCode:设为true时调试会自动跳过第三方库代码,仅在你自己编写的项目代码处触发断点;如果需要调试第三方依赖源码,可将该字段改为false
方式二:配置中固定解释器路径
如果需要把解释器配置固化到文件中、不依赖本地手动选择,可以先在项目根目录执行命令pipenv --py,拿到当前pipenv虚拟环境的Python解释器绝对路径,再把路径写到配置的python字段中,示例如下:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Debug MyModule", "type": "python", "request": "launch", "python": "替换为pipenv --py输出的解释器绝对路径", "module": "myproject.mymodule", "args": ["--count", "500"], "justMyCode": true } ] }
前置任务配置说明
如果启动项目前确实需要执行前置操作(比如数据库迁移、静态文件收集等),可以将这类准备命令配置到preLaunchTask中,注意前置任务里只能放准备类命令,绝对不能放启动Python项目的命令,项目启动逻辑统一交给上述launch配置处理,即可保证调试器正常挂载,所有调试功能正常可用。
内容的提问来源于stack exchange,提问作者Sorin Burghiu
相关产品推荐
相关产品推荐

