Jupyter NbClassic
Jupyter NbClassic is an implementation of the classic Jupyter Notebook 6 as a Jupyter Server extension. It allows users to continue using the Notebook 6 tech-stack and its associated extensions and customizations alongside newer Jupyter environments like Notebook 7 or JupyterLab. The project is currently at version 1.3.3 and receives ongoing maintenance, primarily focusing on security and bug fixes while providing a stable, familiar interface. [1, 6, 7, 14]
Warnings
- breaking Static asset paths for the classic Notebook were changed in nbclassic v1.3.2, breaking the ability to serve them from original endpoints. This was fixed in v1.3.3 by copying assets to legacy paths. Users on v1.3.2 may experience UI issues. [1]
- gotcha When nbclassic is installed alongside Jupyter Notebook 7 (or JupyterLab), its UI will be served under the `/nbclassic/tree` base path, rather than the default `/tree` path. This is to avoid conflicts with Notebook 7, which uses `/tree`. [10, 11]
- breaking Support for Python 3.8 was dropped in nbclassic v1.3.0. Attempts to install or run nbclassic on Python 3.8 or older will fail. [15]
- gotcha Older `notebook` package versions (e.g., `notebook==6.5.1`) might have strict dependency requirements on specific `nbclassic` versions (e.g., `nbclassic==0.4.5`). Installing a newer `nbclassic` (e.g., `0.4.6` or `1.x.x`) can lead to dependency conflicts during `pip install`. [16]
- breaking Entrypoints for extensions were renamed in NbClassic (e.g., `jupyter-nbclassic-extension`, `jupyter nbclassic-serverextension`, `jupyter-nbclassic-bundlerextension`). Older commands or configurations using `jupyter nbextension` for nbclassic might fail or target the wrong server. [7, 8]
- gotcha When configuring the startup directory for nbclassic (especially alongside JupyterLab >= 3), use `c.ServerApp.root_dir` in `jupyter_server_config.py` instead of the older `c.NotebookApp.notebook_dir` in `jupyter_notebook_config.py`. [18]
Install
-
pip install nbclassic
Imports
- NBClassicApp
from nbclassic.nbclassicapp import NBClassicApp
- NBClassicConfigShimMixin
from nbclassic.nbclassicapp import NBClassicConfigShimMixin
Quickstart
jupyter nbclassic