Jupyter Notebook in 4 flavors
Jupyter Notebook is a popular open-source tool for development and exploration in a data world. It started from IPython Notebook developed by Fernando Pérez and Brian Granger. Currently, the Jupyter Notebook is available as 4 different web applications: Classic Jupyter Notebook, Jupyter Lab, Jupyter RetroLab, and Jupyter Lite. Let's look closer for differences between those Jupyter versions.
1. Classic Jupyter Notebook
The Jupyter Notebook Classic is a IPython Notebook successor. It is a web application based on Tornado framework. When you start an app, you are starting a web server locally. Every notebook is a separate web page (tab). Notebooks are saved as .ipynb
files. Notebook consists of cells, that can be code, markdown or raw text. Code cells can be executed. Outputs are displayed below the each cell. The notebook keeps a live connection to the Python REPL (read-eval-print loop) kernel. Users can execute code cells in arbitrary order. All the above features make experimenting with code very joyful.
You can install Classic Jupyter Notebook with pip
command:
pip install notebook
Please use the following command to start the application:
jupyter notebook
The Jupyter Notebook Classic GitHub repository github.com/jupyter/notebook and documentation.
2. Jupyter Lab
The Jupyter Lab is the next version of Jupyter Classic. It is a fully Integrated Development Environment (IDE) for Python. You can open several windows in the same web page (tab). In each window you can have notebook, terminal, text editor or other extension open. Jupyter Lab extensions are not compatible with Classic Jupyter Notebook.
You can easily install Jupyter Lab with the following command:
pip install jupyterlab
# or
conda install -c conda-forge jupyterlab
You start the Lab application with:
jupyter lab
The Jupyter Lab code is available in the GitHub repository github.com/jupyterlab/jupyterlab (documentation).
The Jupyter Lab is a web application, that is simply running web server locally. However, there is available a desktop app version of Jupyter Lab. You can download it from the GitHub github.com/jupyterlab/jupyterlab-desktop. You can open notebooks by simply double-clicking on it.
3. Jupyter RetroLab
Jupyter RetroLab is a distribution of Jupyter Lab, but with a much simpler look and feel that is very similar to Jupyter Notebook Classic, hence the name (retro).
It can be installed with the following command:
pip install retrolab
# or
conda install -c conda-forge retrolab
You can start RetroLab with:
jupyter retrolab
The RetroLab GitHub repository: github.com/jupyterlab/retrolab.
4. Jupyter Lite
Jupyter Lite is a Jupyter distribution that works entirely in a web browser. Yes! You read it right. Python kernels are running in the web browser thanks to PyOdide project. It is an experimental version, and not all features from Jupyter Classic/Lab are working, but many are working fine. Not all Python packages are available (like matplotlib
, ipywidgets
, plotly
, altair
).
You can try Jupyter Lite on this address: https://jupyter.org/try-jupyter/lab/.
The Jupyter Lite GitHub repository github.com/jupyterlite/jupyterlite and documentation.
Summary
Which version of Jupyter application is the best? It all depends on your needs! I personally use Jupyter Notebook Classic. It has all features that I need - editing simple Python scripts and doing data explorations. It has a simple user interface. If you are looking for a fully Integrated Development Environment, then you should try Jupyter Lab. You can open several notebooks in the same page and it has many extensions, for example, Language Server Protocol integration for code completion, suggestions, continuous hinting, diagnostics, highlighting (available at github.com/jupyter-lsp/jupyterlab-lsp). If you would like to use Jupyter Lab extensions and have a simpler look, then RetroLab is a good choice. Jupyter Lite decreases the entry barrier for setting up the development environment. It runs in a web brower (frontend and backend). It might be used to create websites with a Python REPL interface for code teaching.