VSCode and Debugging Python in Virtual Environments
This post is really for me more than anyone else. I will be able to come back here and find it. If it helps you as well, then great.
I have historically not been a Python programmer. Additionally, I have historically used Visual Studio versus VSCode. Lately, I have been doing Python in VSCode. I need to learn my way around.
I recently found how to debug Python with breakpoints and watches in a virtual environment, or at least in the default “-m venv” virtual environment, much as I would in a different language in Visual Studio .
You can have the debug window create a launch.json in the .vscode folder of the root workspace directory or create it yourself from scratch. Here is one of my modified ones.
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: crewai series day_04",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"env": {
"PYTHONPATH": "${workspaceFolder}\\crewai_series"
},
"cwd": "${workspaceFolder}\\crewai_series\\day_04\\src"
},
{
"name": "Python: crewai series day_05",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"env": {
"PYTHONPATH": "${workspaceFolder}\\crewai_series"
},
"cwd": "${workspaceFolder}\\crewai_series\\day_05\\src"
}
]
}
The real trick is to set that PYTHONPATH property to your folder with the virtual environment folder as a top-level subdirectory.
Bonus: you set different debug profiles like I did above and shift between them in the debug window. That is helpful when you have different virtual environments in the same workspace.
That’s it. That’s the post.