Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Content in ipython startup files are not loaded in debug mode. #21422

Open
5 of 9 tasks
Miguel-LlamasLanza opened this issue Oct 12, 2023 · 4 comments
Open
5 of 9 tasks

Comments

@Miguel-LlamasLanza
Copy link

Miguel-LlamasLanza commented Oct 12, 2023

Issue Report Checklist

  • Searched the issues page for similar reports
  • Read the relevant sections of the Spyder Troubleshooting Guide and followed its advice
  • Reproduced the issue after updating with conda update spyder (or pip, if not using Anaconda)
  • Could not reproduce inside jupyter qtconsole (if console-related)
    • Restarted Spyder
    • Reset preferences with spyder --reset
    • Reinstalled the latest version of Anaconda
    • Tried the other applicable steps from the Troubleshooting Guide
  • Completed the Problem Description, Steps to Reproduce and Version sections below

Problem Description

I have some import commands and functions in the .ipython/profile_default/startup directory. They are normally loaded in the spyder ipython console, except when I use debug mode. Is this expected behavior/ I think it would be great to have those function loaded, or at least be able to enable it in the settings (maybe there is a way to do it that I do not know about (?))

What steps reproduce the problem?

  1. Create a file import.py inside the .ipython/profile_default/startup
  2. Start debug mode in spyder.
  3. Call any package imported or function defined in the import.py script

What is the expected output? What do you see instead?

The console returns that it does not recognize the command given (the function or package).


## Versions
<!--- You can get this information from Help > About Spyder...
or (if Spyder won't launch) the "conda list" command
from the Anaconda Prompt/Terminal/command line. --->

* Spyder version: 5.4.3  (conda)
* Python version: 3.10.11 64-bit
* Qt version: 5.15.2
* PyQt5 version: 5.15.7
* Operating System: Linux 5.19.0-32-generic


### Dependencies
<!--- Please go to the menu entry Help > Dependencies,
press the Copy to clipboard button and paste below --->

Mandatory:

atomicwrites >=1.2.0 : 1.4.1 (OK)
chardet >=2.0.0 : 4.0.0 (OK)
cloudpickle >=0.5.0 : 2.2.1 (OK)
cookiecutter >=1.6.0 : 2.1.1 (OK)
diff_match_patch >=20181111 : 20230430 (OK)
intervaltree >=3.0.2 : 3.1.0 (OK)
IPython >=7.31.1,<9.0.0,!=8.8.0,!=8.9.0,!=8.10.0 : 8.14.0 (OK)
jedi >=0.17.2,<0.19.0 : 0.18.2 (OK)
jellyfish >=0.7 : 0.9.0 (OK)
jsonschema >=3.2.0 : 4.17.3 (OK)
keyring >=17.0.0 : 23.13.1 (OK)
nbconvert >=4.0 : 7.5.0 (OK)
numpydoc >=0.6.0 : 1.5.0 (OK)
parso >=0.7.0,<0.9.0 : 0.8.3 (OK)
pexpect >=4.4.0 : 4.8.0 (OK)
pickleshare >=0.4 : 0.7.5 (OK)
psutil >=5.3 : 5.9.0 (OK)
pygments >=2.0 : 2.15.1 (OK)
pylint >=2.5.0,<3.0 : 2.17.4 (OK)
pylint_venv >=2.1.1 : 3.0.2 (OK)
pyls_spyder >=0.4.0 : 0.4.0 (OK)
pylsp >=1.7.2,<1.8.0 : 1.7.3 (OK)
pylsp_black >=1.2.0 : 1.3.0 (OK)
qdarkstyle >=3.0.2,<3.2.0 : 3.1 (OK)
qstylizer >=0.2.2 : 0.2.2 (OK)
qtawesome >=1.2.1 : 1.2.3 (OK)
qtconsole >=5.4.2,<5.5.0 : 5.4.3 (OK)
qtpy >=2.1.0 : 2.3.1 (OK)
rtree >=0.9.7 : 1.0.1 (OK)
setuptools >=49.6.0 : 67.8.0 (OK)
sphinx >=0.6.6 : 7.0.1 (OK)
spyder_kernels >=2.4.3,<2.5.0 : 2.4.3 (OK)
textdistance >=4.2.0 : 4.5.0 (OK)
three_merge >=0.1.1 : 0.1.1 (OK)
watchdog >=0.10.3 : 3.0.0 (OK)
xdg >=0.26 : 0.28 (OK)
zmq >=22.1.0 : 25.1.0 (OK)

Optional:

cython >=0.21 : 0.29.35 (OK)
matplotlib >=3.0.0 : 3.7.1 (OK)
numpy >=1.7 : 1.23.5 (OK)
pandas >=1.1.1 : 1.5.3 (OK)
scipy >=0.17.0 : 1.10.1 (OK)
sympy >=0.7.3 : 1.11.1 (OK)

Spyder plugins:

spyder_line_profiler.spyder.plugin 0.3.1 : 0.3.1 (OK)
spyder_notebook.notebookplugin 0.4.1 : 0.4.1 (OK)

@dalthviz
Copy link
Member

Hi @Miguel-LlamasLanza thank you for the feedback! I think you could achieve that by using the current_namespace kwarg of the debugfile function (the function call that gets executed in the IPython console when you debug). For that you will need to run a manually modified debugfile call in the IPython console. So something like:

debugfile('<path to your file>', wdir='<path to the working directory dir>', current_namespace=True)

A preview of the workaround:

namespaces_debug

Thinking about this, seems to me that this is/should be a preference? What do you think @ccordoba12? I remember being able to set things to run using the console current namespace but maybe that only has been working for normal file runs and not on debug runs?

@ccordoba12
Copy link
Member

Thinking about this, seems to me that this is/should be a preference? What do you think @ccordoba12? I remember being able to set things to run using the console current namespace but maybe that only has been working for normal file runs and not on debug runs?

Well, if you go to the menu

Run > Configuration per file

and then select Run file with custom configuration and Run in console's namespace instead of an empty one

image

Spyder will set current_namespace=True in debugfile:

image

@ccordoba12
Copy link
Member

And about what @Miguel-LlamasLanza said:

I have some import commands and functions in the .ipython/profile_default/startup directory. They are normally loaded in the spyder ipython console, except when I use debug mode. Is this expected behavior

Yes, it is. We don't load files in that directory while debugging.

I think it would be great to have those function loaded, or at least be able to enable it in the settings (maybe there is a way to do it that I do not know about (?))

It probably is but we don't have time to do implement right now, sorry. So for now you can follow @dalthviz's advice about starting the debugger in the console's namespace

Or you could use a simpler solution to what you want, which is setting the lines you'd like to run in the debugger preferences:

image

@Miguel-LlamasLanza
Copy link
Author

Thank you @dalthviz and @ccordoba12 for your answers.
Both workarounds work fine,
I personally prefer the option of putting all my lines in the debugger preferences (i.e. copying what I have in the .ipython/profile_default/startup/import.py file in there). It works even if I am defining functions there (I did not need to separate each line with semicolon, and it still worked)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants