-
In-browser computing: runs entirely in web browsers using WebAssembly; no installation required on any device or operating system
-
Multi-language support: built-in Python (via Pyodide) and R (via xeus-r) kernel support
-
Multi-device access: access, create copies of, and edit notebooks from any device right in your web browser (all major browsers are supported)
-
K12-focused design: educational terminology and simplified interface for newcomers to programming and notebooks with a classroom-friendly, accessible design
-
Single-document interface: simplified workspace focused on one notebook at a time, reducing distractions and complexity offered by traditional Jupyter
-
Instant sharing: one-click notebook sharing with permanent links, eliminating the need for user accounts
-
View-only sharing: share read-only notebooks, that can be copied for editing
-
Flexible export options: download notebooks as
.ipynb
files or as PDF documents -
Auto-save functionality: automatic cloud synchronisation with manual save reminders
-
Data files: need to work with files in your notebooks? Upload and download data files within the application via a simple grid view
-
Pre-installed packages: popular data science and visualisation libraries such as
numpy
,pandas
,matplotlib
, andseaborn
, and R packages likeggplot2
anddplyr
are ready to use
This extension requires jupyterlab==4.5.0a3
, and additional dependencies listed in lite/requirements.txt
.
No installation is required! Simply visit https://jupytereverywhere.org to start using Jupyter Everywhere directly in your web browser.
To install the extension for development purposes, please follow the steps outlined in the "Development install" section below.
If you'd like to contribute to Jupyter Everywhere (thanks!), please read the following instructions to set up your development environment.
Note: You will need Node.js to build the extension package.
The jlpm
command is provided by JupyterLab's pinned version of yarn
that is installed with JupyterLab.
# Clone the repo to your local environment
# Change directory to the jupytereverywhere directory
# Install package in development mode
pip install -e "."
# Link your development version of the extension with JupyterLab
jupyter labextension develop . --overwrite
# Rebuild the extension TypeScript source after making changes
jlpm build
You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension.
# Watch the source directory in one terminal, automatically rebuilding when needed
jlpm watch
# Run JupyterLab in another terminal
jupyter lab
With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt).
By default, the jlpm build
command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command:
jupyter lab build --minimize=False
To build the JupyterLite application after the extension has been installed into the environment, you can run the following commands from the root of this repository:
pip install -r lite/requirements.txt
jlpm build:all
which will install the necessary dependencies, install the extension into JupyterLite, and build the JupyterLite static assets. You can then serve the built JupyterLite application locally with a simple HTTP server, for example:
python -m http.server --directory dist 3000
To ensure that the code follows the standard style and does not contain basic issues, run:
jlpm lint
You can have it run on relevant files automatically before each git
commit, by installing pre-commit
,
which will use the configuration provided in the .pre-commit-config.yaml
file and install the necessary hooks:
pip install pre-commit
pre-commit install
pip uninstall jupytereverywhere
In development mode, you will also need to remove the symlink created by jupyter labextension develop
command. To find its location, you can run jupyter labextension list
to figure out where the labextensions
folder is located. You can then remove the symlink named jupytereverywhere
within that folder.
This extension uses Playwright for the integration (snapshot) tests.
More information is provided within the the ui-tests/README.md
document.
See RELEASE.md for instructions on creating a new release of the extension and the bundled JupyterLite application.
Jupyter Everywhere is built on the powerful foundation of the Jupyter ecosystem: particularly, JupyterLite and JupyterLab. Additionally, it is powered by the Pyodide and the Xeus projects, their intersections with the Jupyter ecosystem, and the broader scientific Python community. We are grateful to the maintainers, core developers, and contributors of these projects who make educational computing accessible to everyone.
Jupyter Everywhere (JE) is a collaborative project between Skew The Script and CourseKata, launched in 2024 with support from the Gates Foundation. Our initiative focuses on bringing data science tools and resources into classrooms by providing access to high-quality tools. Our goal is to empower teachers and students to explore data science and statistics easily, fostering deeper engagement and understanding in these essential fields.