Reputation: 879
Running jupyter notebook
and jupyter server
give me very similar results and the descriptions are also quite similar.
❯ jupyter notebook -h
The Jupyter HTML Notebook.
This launches a Tornado based HTML Notebook Server that serves up an
HTML5/Javascript Notebook client.
❯ jupyter server -h
The Jupyter Server.
This launches a Tornado-based Jupyter Server.
There are differences like server
doesn't load nbextensions
but I don't understand why there are two commands that have so much overlap.
For reference, this are the versions of various modules.
❯ jupyter --version
jupyter core : 4.7.1
jupyter-notebook : 6.3.0
qtconsole : 5.0.3
ipython : 7.22.0
ipykernel : 5.3.4
jupyter client : 6.1.12
jupyter lab : 3.0.11
nbconvert : 6.0.7
ipywidgets : 7.6.3
nbformat : 5.1.3
traitlets : 5.0.5
Upvotes: 26
Views: 16328
Reputation: 15389
Jupyter Notebook (notebook
module) prior to v7 contained both:
However, because there are now multiple clients (frontends) providing different web applications for notebooks:
It made sense to split the server component used by all of these so that e.g. JupyterLab does not have to depend on notebook. This also means that if a fix to the server component is needed, it can be released quickly independent of Jupyter Notebook release cycle (and users of all frontents can benefit immediately).
As a consequence, and to make the break up clean, the old Jupyter Notebook was split into:
This implies changes for users and developers, some already described in "migrate from notebook" docs:
c.NotebookApp
to c.ServerApp
(the options specific to notebook remain c.NotebookApp
)jupyter_server_config.py
rather than jupyter_notebook_config.py
(same for .json
version)jupyter server extension
rather than jupyter serverextension
(note the extra space!) to list, enable or disable extensionsetc/jupyter/jupyter_server_config.d
rather than etc/jupyter/jupyter_notebook_config.d
(in practice most extensions that were updated to support jupyter server are now placing files in both locations for backward compatibility with notebook, but this will change in the future)It is important to note that depending on how you start your jupyter notebook, you will see different servers being used:
jupyter nbclassic
(assuming nbclassic is installed) will use the new jupyter-server
jupyter notebook
will use the old notebook
serverjupyter lab
will use new jupyter-server
starting with JupyterLab 3.0 unless running on JupyterHub/Binder where it might still be using old notebook
server, depending on configurationThis also implies that you may see different extensions when running jupyter notebook
vs jupyter nbclassic
(depending on whether their developers updated the locations, and whether they decided they want to support the legacy notebook
server).
The creation of nbclassic
replacement rather than removal of the server code from existing notebook
package was meant to ensure backward compatibility, and this is why you still have two copies of the Tornado server (one provided by jupyter notebook
and one by jupyter server
). To make the situation simpler you could remove notebook
and install nblcassic
, but given that the transition is in progress you may need to adjust a few things manually. However, this is only a temporary situation, and starting with Notebook v7.0 it also migrated to use jupyter server
.
This might look inconvenient for now, but this step ensures greater maintainability of the core Jupyter infrastructure in the future and will benefit users and system admins greatly later on.
Upvotes: 47