Create a JupyterLite archive that can be used offline#
It is possible to create a fully self-contained JupyterLite archive with no request to external services.
Some configuration parts depend on the kernels you might be using.
This guide focuses on two Python kernels only: Xeus Python and Pyodide.
With the Xeus Python kernel#
Using the Xeus Python kernel, packages are automatically pre-installed at build time.
They are then available as static assets in the JupyterLite output directory.
These assets are available offline by default, there is no extra configuration necessary.
See the related guide for more information.
With the Pyodide kernel#
Configure the Pyodide kernel#
By default the Pyodide files are fetched from a CDN.
The full Pyodide distribution can be pretty heavy (~180MB), but it’s possible to self-host it.
Use the --pyodide
flag to specify the Pyodide distribution you would like to use. For
example:
jupyter lite build --pyodide https://github.com/pyodide/pyodide/releases/download/0.22.1/pyodide-0.22.1.tar.bz2
Warning
Generally, a version of pyodide_kernel
is likely only compatible with variants of the
same x.y.z
version against which the release was tested, as both python
and JS APIs are still changing frequently on both sides of the dependency.
Configure the piplite wheels#
By default calling %pip install
or piplite.install()
downloads and installs packages
from the public PyPI.
Instead you can configure a list of packages that will be downloaded at build time so they can be hosted alongside your JupyterLite website.
See Ship additional Pyodide wheels at build time for more information.
Concretely that means populating a list of URLs for downloading wheels. A good example for this is the configuration used for the JupyterLite demo website: jupyter_lite_config.json
The relevant part of jupyter_lite_config.json
is the piplite_urls
list which looks
like the following:
{
"PipliteAddon": {
"piplite_urls": [
"https://files.pythonhosted.org/packages/e6/0b/24795939622d60f4b453aa7040f23c6a6f8b44c7c026c3b42d9842e6cc31/fastjsonschema-2.15.3-py3-none-any.whl",
"https://files.pythonhosted.org/packages/py2.py3/a/asttokens/asttokens-2.0.5-py2.py3-none-any.whl",
"https://files.pythonhosted.org/packages/py2.py3/b/backcall/backcall-0.2.0-py2.py3-none-any.whl",
"https://files.pythonhosted.org/packages/py2.py3/b/bqplot/bqplot-0.12.33-py2.py3-none-any.whl",
"https://files.pythonhosted.org/packages/py2.py3/c/certifi/certifi-2021.10.8-py2.py3-none-any.whl",
"https://files.pythonhosted.org/packages/py2.py3/d/defusedxml/defusedxml-0.7.1-py2.py3-none-any.whl",
"https://files.pythonhosted.org/packages/py2.py3/e/executing/executing-0.8.3-py2.py3-none-any.whl",
"..."
]
}
}
Tweak this list based on the packages you would like to serve statically.
Offline Progressive Web App (PWA)#
JupyterLite can be used as a Progressive Web App (PWA) on mobile devices, but also on desktop.
When JupyterLite is configured to work offline as detailed in this guide, it should be possible to use JupyterLite as a PWA without any network connection. There might still be a need for using the app while still connected to the Internet first, so the underlying Service Worker can cache the assets.
Check out the Using guide for more details on how to install JupyterLite as an application.
Reference#
Check out the CLI Reference for more details.