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

Open
#1,158 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
jupyter-notebook, python
Domain
backend

Research direction

Reproduce the failure with ~/.ipython/profile_default/startup/a.py and b.py, then trace the kernel's startup-script execution entry point. Verify the behavior in a Jupyter notebook: later scripts should still run after an earlier exception, and the failed script should produce some indication of the error.

Written by the indexing model from the issue text.

Description

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).

Dominant language
Python
Stars
734
Forks
411
Avg merge
1d 2h
Merged PRs (30d)
9

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ipython/ipykernel

All issues in ipython/ipykernel

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.