spyder
spyder copied to clipboard
Debug File (Ctrl+F5) does not respect working directory in Run configuration
Issue Report Checklist
- [x] Searched the issues page for similar reports
- [x] Read the relevant sections of the Spyder Troubleshooting Guide and followed its advice
- [ ] Reproduced the issue after updating with
conda update spyder
(orpip
, if not using Anaconda) - [ ] Could not reproduce inside
jupyter qtconsole
(if console-related) - [x] Tried basic troubleshooting (if a bug/error)
- [x] Restarted Spyder
- [x] Reset preferences with
spyder --reset
- [ ] Reinstalled the latest version of Anaconda
- [x] Tried the other applicable steps from the Troubleshooting Guide
- [x] Completed the Problem Description, Steps to Reproduce and Version sections below
Problem Description
Consider the following project structure of the folder testproject
.
├── .python-version
├── .spyproject
│ └── config
├── .venv
│ ├── .gitignore
│ ├── CACHEDIR.TAG
│ ├── Lib
│ ├── pyvenv.cfg
│ ├── Scripts
│ └── share
├── pyproject.toml
├── README.md
├── scripts
│ └── foo.py
└── uv.lock
The python interpreter is set to path/to/testproject/.venv/Scripts/python.exe
. I want to run foo.py
from the dir testproject
, therefore, i set the following run configuration under Run->Configuration per File
Content of foo.py
if __name__ == "__main__":
print("test")
raise ValueError
What steps reproduce the problem?
I tried two different ways of running the file: a) Run foo.py with F5 b) Debug foo.py with Ctrl+F5
What is the expected output? What do you see instead?
a)
I expect to to automatically enter the debugger due to the run configuration and the deliberate ValueError. This basically happens, except for the unexpected *** NameError: name '_pdbcmd_print_frame_status' is not defined
Full output of a)
In [1]: %runfile C:/Users/path/to/testproject/scripts/foo.py --wdir C:/Users/path/to/testproject/testproject --post-mortem
test
Traceback (most recent call last):
File ~\path\to\testproject\.venv\Lib\site-packages\spyder_kernels\customize\utils.py:209 in exec_encapsulate_locals
exec_fun(compile(code_ast, filename, "exec"), globals)
File c:\users\path\to\testproject\testproject\scripts\foo.py:3
raise ValueError
ValueError
****************************************
Entering post mortem debugging...
****************************************
*** NameError: name '_pdbcmd_print_frame_status' is not defined
IPdb [1]:
b) I expect the execution with the wdir set to the project root and the lauch of the debugger. However, the Working directory settings seem to be ignored for Ctrl+F5
, since the working directory is changed to the folder scripts
Full output of b)
In [3]: %debugfile C:/Users/path/to/testprojct/testproject/scripts/foo.py --wdir
*** NameError: name '_pdbcmd_print_frame_status' is not defined
IPdb [1]:
Bonus Question
Is it correct that at the moment, there is no possibility to set the global run configuration such that the wdir is relative to the currently opened Spyder project?
Versions
- Spyder version: 6.0.0 (standalone)
- Python version: Python 3.11.9 64-bit
- Qt version: Qt 5.15.8
- PyQt version: PyQt5 5.15.9
- Operating System name/version: Windows 10 (AMD64)
Dependencies
# Mandatory:
aiohttp >=3.9.3 : 3.10.5 (OK)
asyncssh >=2.14.0,<3.0.0 : 2.17.0 (OK)
atomicwrites >=1.2.0 : 1.4.1 (OK)
chardet >=2.0.0 : 5.2.0 (OK)
cloudpickle >=0.5.0 : 3.0.0 (OK)
cookiecutter >=1.6.0 : 2.6.0 (OK)
diff_match_patch >=20181111 : 20230430 (OK)
github >=2.3.0 : 2.4.0 (OK)
importlib_metadata >=4.6.0 : 8.4.0 (OK)
intervaltree >=3.0.2 : 3.1.0 (OK)
IPython >=8.13.0,<9.0.0,!=8.17.1 : 8.27.0 (OK)
jedi >=0.17.2,<0.20.0 : 0.19.1 (OK)
jellyfish >=0.7 : 1.1.0 (OK)
jsonschema >=3.2.0 : 4.23.0 (OK)
keyring >=17.0.0 : 25.3.0 (OK)
nbconvert >=4.0 : 7.16.4 (OK)
numpydoc >=0.6.0 : 1.8.0 (OK)
parso >=0.7.0,<0.9.0 : 0.8.4 (OK)
pexpect >=4.4.0 : 4.9.0 (OK)
pickleshare >=0.4 : 0.7.5 (OK)
psutil >=5.3 : 6.0.0 (OK)
pygments >=2.0 : 2.18.0 (OK)
pylint >=3.1,<4 : 3.2.7 (OK)
pylint_venv >=3.0.2 : 3.0.3 (OK)
pyls_spyder >=0.4.0 : 0.4.0 (OK)
pylsp >=1.12.0,<1.13.0 : 1.12.0 (OK)
pylsp_black >=2.0.0,<3.0.0 : 2.0.0 (OK)
pyuca >=1.2 : 1.2 (OK)
qdarkstyle >=3.2.0,<3.3.0 : 3.2.3 (OK)
qstylizer >=0.2.2 : 0.2.3 (OK)
qtawesome >=1.3.1,<1.4.0 : 1.3.1 (OK)
qtconsole >=5.6.0,<5.7.0 : 5.6.0 (OK)
qtpy >=2.4.0 : 2.4.1 (OK)
rtree >=0.9.7 : 1.3.0 (OK)
setuptools >=49.6.0 : 73.0.1 (OK)
sphinx >=0.6.6 : 8.0.2 (OK)
spyder_kernels >=3.0.0,<3.1.0 : 3.0.0 (OK)
superqt >=0.6.2,<1.0.0 : 0.6.7 (OK)
textdistance >=4.2.0 : 4.6.2 (OK)
three_merge >=0.1.1 : 0.1.1 (OK)
watchdog >=0.10.3 : 5.0.1 (OK)
yarl >=1.9.4 : 1.9.7 (OK)
zmq >=24.0.0 : 26.2.0 (OK)
# Optional:
cython >=0.21 : 3.0.11 (OK)
matplotlib >=3.0.0 : 3.9.2 (OK)
numpy >=1.7 : 2.1.0 (OK)
pandas >=1.1.1 : 2.2.2 (OK)
scipy >=0.17.0 : 1.14.1 (OK)
sympy >=0.7.3 : 1.13.2 (OK)