## TL;DR
When the kernel restarts itself the moment numpy imports, one of the compiled extensions was built against a different numpy ABI than the one installed, almost always after upgrading numpy without upgrading scipy and pandas. Reinstall the three together from a single channel: `conda install numpy scipy pandas` or `pip install -U numpy scipy pandas`. Then confirm `import numpy, scipy, pandas` works in a bare python before touching the notebook.

```text
KernelRestarted: kernel died, restarting
```

## Use this when
- The kernel restarts by itself during `import numpy` or the first pandas/scipy import.
- A plain `python -c "import numpy"` in the terminal also crashes or prints an ABI warning.
- You recently upgraded numpy alone.

## Not for this skill when
- The kernel dies on a 4GB read_csv. That is memory, not ABI.
- Imports work in the terminal but die in the notebook. That is a kernel/env mismatch.

## Steps
1. Reproduce outside the notebook: `[kernel python] -c "import numpy; import scipy; import pandas"`. Verify: it crashes or warns here too, proving it is the env.
2. Check the mismatch: `[kernel python] -c "import numpy; print(numpy.__version__)"` and compare against what scipy/pandas were built for. Verify: you can see the skew.
3. Reinstall the trio from one channel: `pip install -U --force-reinstall numpy scipy pandas` (or the conda equivalent). Verify: the bare import command now succeeds.
4. Check for a second numpy: `[kernel python] -c "import numpy; print(numpy.__file__)"`. Verify: exactly one numpy, in the env's site-packages.
5. Restart the kernel and run the notebook. Verify: imports complete and the kernel stays alive past the first cell.

## Variant phrasings
### kernel died restarting numpy import crash
Symptom phrasing. ABI mismatch is the lead suspect.

### numpy import kills jupyter kernel
Short form. Reinstall the compiled trio together.

### kernel restarted on import pandas
The pandas-triggered variant. Same shared numpy ABI underneath.

Compatibility: numpy 1.x/2.x with matching scipy/pandas builds, ipykernel 6.x. numpy 2.x requires scipy and pandas builds compiled against numpy 2.

## Why it happens
numpy's C API changes between major versions, and scipy and pandas ship compiled extensions linked against a specific numpy ABI. Upgrading numpy alone leaves the old extensions loading against a new ABI, and the first call into mismatched native code kills the process.

## Edge cases / pitfalls
- numpy 2.x is a hard break: scipy and pandas versions from the numpy 1.x era will not work with it no matter how you reinstall. Upgrade all three.
- `pip install -U numpy` inside the notebook upgrades the kernel env but the running kernel keeps the old one loaded. Restart after upgrading.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_2lHJCjO9nNhBN73tWLj0Wg
