IPython
IPython vs Ipykernel
IPython provides a rich architecture for interactive computing. IPython itself is focused on interactive Python, part of which is providing a Python kernel for Jupyter. This URL describes more about features by version of IPython.
HM DLS framework utilize IPython to connect Jupyter and Conda/Mamba based on the Architecture Guides — Jupyter Documentation which shows IPython and Jupyter are connected and related.
IPykernel(IPython kernel) is a Jupyter kernel for Python code execution. Jupyter, and other compatible notebooks, use the IPython kernel for executing Python notebook code. pip show command shows the relationship ipython and ipykernel.
DLS$ pip show ipython
Name: ipython
Version: 8.15.0
Summary: IPython: Productive Interactive Computing
...
Requires: backcall, decorator, jedi, matplotlib-inline, pexpect, pickleshare, prompt-toolkit, pygments, stack-data, traitlets
Required-by: ipykernel
Python Data Science Handbook
This website contains the full text of the Python Data Science Handbook by Jake VanderPlas; the content is available on GitHub in the form of Jupyter notebooks.
IPython and Python version compatiblity
Beginning with version 6.0, IPython stopped supporting compatibility with Python versions lower than 3.3 including all versions of Python 2.7.
If you are looking for an IPython version compatible with Python 2.7, need to use the IPython 5.x LTS release and refer to its documentation (LTS is the long term support release)[1]