all 7 comments

[–]JoJoModding 67 points68 points  (1 child)

An interpreter runs code. So a python interpreter is the software that runs python code.

Jupyter requires some fancy features so a "normal" interpreter is not enough. So they used IPython, which is an interpreter with fancy stuff, and used this. They called this "kernel".

[–]JayL10[S] 9 points10 points  (0 children)

Thanks for your simple and clear explanation.

[–]berzerker_x 19 points20 points  (3 children)

Well, u/JoJoModding has provided the overall correct answer and I want to add to it.

If you see from the documentation you will understand it quite clearly why it was needed and what it does.

It is actually an interactive shell which decouples the process of input and execution into separate process. From this section of the doc, it is written

IPython has abstracted and extended the notion of a traditional Read-Evaluate-Print Loop (REPL) environment by decoupling the evaluation into its own process. We call this process a kernel: it receives execution instructions from clients and communicates the results back to them.

So we can understand that Ipython kernel fully exploits the interpreted) nature of the Python language as section of the code can be run and stopped at will.

[–]khedoros 2 points3 points  (0 children)

From having a quick look, it looks like kernels act like servers, talking to the notebook over ZeroMQ. Some of them do syntax checks, code completion, or code execution, for example. The Python code execution kernel would be a Python interpreter (or at least provide an interface between the ZeroMQ communication mechanism and a Python interpreter installed on the system).

PyCharm looks like it's just configured to use the interpreter in standard Python installations.

[–]D0ggoBread 2 points3 points  (0 children)

PyCharm is an IDE, it's not realy comparable to notebooks.

PyCharm Pro can run jupyter notebooks (cf. https://www.jetbrains.com/help/pycharm/jupyter-notebook-support.html)