I have had an issue I couldn't resolve now for a while, and I feel like it's a trivial issue when it comes to Debugging packages using VScode. When I have a complex project I set up a setup.py file and create a package, I use this package inside of my package to reference to different modules. For example:
.
└── project_root
├── module1
│ ├── f1.py
│ ├── f2.py
│ └── __init__.py
├── module2
│ ├── f1.py
│ ├── f2.py
│ └── __init__.py
└── module3
├── f1.py
├── f2.py
└── __init__.py
############# IMPORTING CLASSES/METHODS ##################
### for example inside modules3.f1:
from project_root.module1.f2 import some_class
I always use a virtual environment. If I install my setup file with pip install .
the importing of the file works as expected. Unfortunately, when it comes down to debugging, it will only respect the breakpoints of the files inside my virtual environment <virtual env name>/lib64/python3.8/site-packages/<package_name>
and not the ones I'm working on in the project_root
.
So I have basically 2 questions:
a) Is there a way to tell VSCode to use my <project_root> files instead of the virtual env package for my package?
b) I'm creating a package because otherwise, I have problems referencing files in parent directories. Is there a better approach to creating complicated code structures than immediately setting up a setup.py
and ultimately resolving my debugging issue?
My VScode launch.json
is setup like this:
{
// 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: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"cwd": "${fileDirname}",
"args": ["-d"],
"justMyCode":false
// add env
"env": {
"MODE": "True"
}
}
]
}
############ UPDATE ##############################
I hope this image describes my problem better. I setup virtual environment, set breakpoints in the Identical files, in my "working directory" and inside the virtual env (v/lib/python3.8/site-packages/Packagename/module1/f1.py). Then I execute my script in the debugger and the breakpoint in the V env will activate and not the one in the working dir.