Notebooks are a common tool among data scientists - many data professionals write all their code in notebooks.
Jupyter Lab is a web application used by data scientists to run Jupyter Notebooks. Historically the only way to work with notebooks was using Jupyter Notebook - in 2017 we were given Jupyter Lab.
Jupyter Lab offers a superior development experience to Jupyter Notebook, with improvements such as:
This post is aimed at showing off what Jupyter Lab can do.
Install without a space:
$ pip install jupyterlab
Start a server with a space:
$ jupyter lab
You can then point your browser to
http://localhost:8888/lab, and you'll see the Launcher screen, shown below with the File Browser open in the sidebar:
Unlike Jupyter Notebook, you can have multiple tabs open side by side - you can also keep track of your kernels by selecting Running Terminals & Kernels in the sidebar:
Something that can be confusing is the difference between the
.ipynb notebook file, Jupyter Notebook & Jupyter Lab:
.ipynb) is a JSON text file that defines the structure & code of a notebook
Both Jupyter Notebook & Jupyter Lab can be used to run any
.ipynb notebook file.
Another area for confusion is what exactly a kernel is. A kernel is just a running Python interpreter, usually connected to a notebook. It is possible swap kernels after they are running, but it's not something we do a lot.
Kernels can be managed from the menu bar - restarting kernels is something that is done a lot. Unfortunately there are no default shortcuts setup for kernel management - see our post on Customizing Jupyter Lab Shortcuts to see how to set these up.
In order to control which virtual environment you are using in the notebook, it's best to activate the environment before you install Jupyter Lab or start the server. For example, if you are using
conda to manage virtual environments:
$ conda activate base $ jupyter lab
You'll also want to make sure you activated this environment before installing Jupyter Lab.
When editing notebooks, Jupyter Lab becomes a modal editor with two modes - Command and Edit:
A modal editor will operate differently depending on the mode - the same key will do different things based on what mode you are in. You can see what mode you are in on the status bar.
You can move between modes using:
Enterto move from Command Mode to Edit Mode
Escapeto move from Edit Mode to Command Mode
Cells can be run using
Shift Enter in either mode, ending up in Command Mode.
A notebook is composed of cells - blocks that contain text. The text inside a cell can either be code, Markdown or raw text. The ability to have mix executable code and Markdown documentation is a key feature of notebooks.
You can change the cell type using a dropdown:
You can change cell types using the following shortcuts in Command mode:
m= change cell to Markdown
y= change cell to code
Three other useful Command Mode shortcuts for operating on cells are:
a= insert cell above
b= insert cell below
dd= delete cell
Mastering these five shortcuts will allow you to work with cells as efficiently as you work with text.
Shift-Tab will show a tooltip for the function or class your cursor is on:
Similar to the tooltip, except it's always there. You can have this help always shown in a separate pane by opening a Show Contextual Help window from the Launcher:
Consoles are another way to interact with a running kernel - a cool trick is to connect a console to a Python script (
No more committing
README.md changes just to see the updates:
These are actually
iPython features, and will also work in an
?to see the docstring
??to see the source code
iPython feature - running shell commands inside a notebook:
You can use this to automatically install packages in the first cell of a notebook - make sure to use the
-q flag to hide the output:
Autoreload helps deal with problem of source code outside the notebook not being reimported when it's changed. This is only a problem when the source code changes after you start the kernel - essentially only when you are writing code yourself, external to the notebook.
Putting these two commands at the top of your notebook will mean that if you make changes to source code outside of the notebook, you can get these changes without having to restart the kernel.
%load_ext autoreload %autoreload 2
The most important tip of all - a dark theme:
Below is a list of the most useful keyboard shortcuts in Jupyter Lab:
Cmd B= toggle sidebar
Alt W= close tab
Enter= to move from Command to Edit
Escape= to move from Edit to Command
Shift Enter= run cell
a = insert cell above
b = insert cell below
dd = delete cell
z = undo cell
shift z = redo cell
m = change cell to Markdown
y = change cell to code
Cmd Z= undo text
Shift Cmd Z= redo text
Thanks for reading!
If you enjoyed this blog post, make sure to check out our free 74 data science lessons across 21 courses.