ipykernel icon indicating copy to clipboard operation
ipykernel copied to clipboard

Exception in script in ~/.ipython/profile_default/startup causes other scripts to not execute

Open kerrickstaley opened this issue 2 years ago • 0 comments

Summary

If one of the files in your ~/.ipython/profile_default/startup throws an exception, then any other file that executes later (i.e. is lexicographically higher, because startup scripts are executed in lexicographical order) will not be executed.

To reproduce

  1. Run these commands:
echo 'raise Exception' > ~/.ipython/profile_default/startup/a.py
echo 'x = 123' > ~/.ipython/profile_default/startup/b.py
  1. Open a Jupyter notebook, type x into a cell, and press enter

Expected behavior

It outputs 123. Ideally it also shows some information indicating that a.py failed to run.

Actual behavior

It shows NameError: name 'x' is not defined. It also doesn't give any indication that a.py (or b.py) failed to run.

System configuration

Kernel version:

Python 3.11.6 (main, Oct  2 2023, 20:46:14) [Clang 14.0.3 (clang-1403.0.22.14.1)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.16.1 -- An enhanced Interactive Python. Type '?' for help.

Python packages:

$ python3 -m pip show ipykernel | grep Version
Version: 6.25.2

OS version: macOS 13.3.1

Notes

If you run

mv ~/.ipython/profile_default/startup/{a,c}.py

then it will successfully define x (because b.py runs before c.py).

kerrickstaley avatar Oct 23 '23 18:10 kerrickstaley