VSCode-Python虚拟环境调试

在VSCode中使用不同环境进行debug Python代码

VSCode-Python虚拟环境调试

如何切换debug环境?

Python项目开发中,使用VSCode的调试功能可以比较方便的设置断点和查看变量值,在需要使用不同虚拟环境进行debug时,应如何进行切换?

当前使用venv创建虚拟环境。

# 创建名为dev_env的虚拟环境
python3 -m venv dev_env
# 切换到dev_env虚拟环境
source dev_env/bin/active

首先需要修改launch.json文件,用于配置和启动调试器的文件。
VSCode左边活动栏切换到运行和调试,如图:

点击小齿轮打开launch.json文件,在configurations python中定义不同环境的编译器路径。

{
  // 使用 IntelliSense 了解相关属性。 
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: 环境名1",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "justMyCode": true,
      "python": "/home/环境1/bin/python"
    },
    {
      "name": "Python: 环境名2",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "justMyCode": true,
      "python": "/home/环境2/bin/python"
    }
  ]
}

保存后可看到 dev和test 两个选项。

选择运行环境后,点击左侧三角可开始debug模式。


为什么在第三方库的断点不中断?

使用venv创建虚拟环境后,在第三方库的代码中打上断点,无法在断点上停止,而在自己的代码打断点是可以正常停止的。调试时,发现打在第三方库的断点变成灰色,有如下提示。

原因是默认只调试自己的代码,所以需在launch.json中将justMyCode改为false

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: dev",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "justMyCode": false, # 原为true,需改为false
      "python": "/home/dev/bin/python"
    }
  ]
}

重新运行调试模式,断点可在第三方库中停止。