Skip to content

joouha/euporie

Repository files navigation

<Logo>

euporie

Try euporie online in your browser ⭐ Documentation Latest Version View license

Euporie is a terminal based interactive computing environment for Jupyter.

Euporie's apps allow you to interact with Jupyter kernels, and run Jupyter notebooks - entirely from the terminal.

If you're working with Jupyter notebooks in a terminal only environment, like an SSH server or a container, or just prefer working in the terminal, then euporie is the tool for you!

https://github.com/joouha/euporie/assets/12154190/c8ea6e23-11bb-4ffc-a9e5-111f788c51ae
Console Notebook Preview Hub

View more screenshots here


Try euporie

In your terminal - if you have uv installed, you can run any euporie app instantly without installing it, using uvx:

$ uvx euporie notebook            # launch the notebook editor
$ uvx euporie notebook my.ipynb   # ...optionally with a notebook to open
$ uvx euporie console             # interactive Jupyter console
$ uvx euporie preview my.ipynb    # render a notebook to the terminal

In your browser - no installation required: launch the live demo.

If you'd rather install euporie permanently, see Install below.


Install

For day-to-day use, install euporie with uv (recommended), pipx or pip:

$ uv tool install euporie
$ # OR
$ pipx install euporie
$ # OR
$ python -m pip install --user euporie

You can also run euporie without installing it - see Try euporie above.

Features

  • Edit and run notebooks in the terminal
  • Run code interactively in a console
  • Display images using terminal graphics (sixel / iterm / kitty)
  • Use Jupyter widgets interactively in the terminal
  • Render rich kernel output (markdown, tables, images, LaTeX, HTML, SVG, & PDF)
  • Tab-completion, line suggestions and contextual help
  • Convert a console session to a notebook
  • Micro / Vim / Emacs style key-bindings

Packages

Euporie is structured as a collection of packages, allowing you to install only the components you need:

  • euporie - Metapackage which installs all euporie apps and provides the euporie launcher command
  • euporie-core - Core functionality shared across all apps (config system, kernel client, LSP client, shared widgets, and rich output rendering)
  • euporie-console - Interactive console application
  • euporie-notebook - Notebook editing application
  • euporie-preview - Notebook preview application
  • euporie-hub - Multi-user SSH server for euporie apps
  • apptk - Terminal UI toolkit extending prompt_toolkit, used by euporie

Installing the euporie metapackage will pull in euporie-console, euporie-notebook, and euporie-preview. To install an individual app, install its package directly, e.g.:

$ uv tool install euporie-notebook

Usage

Launcher

The euporie command acts as a launcher for the various euporie apps:

$ euporie notebook notebook.ipynb
$ euporie console
$ euporie preview notebook.ipynb
$ euporie hub

If you don't want to install euporie, you can run any of these commands directly with uvx (e.g. uvx euporie notebook notebook.ipynb) - see Try euporie.

Notebooks

You can edit a notebook using euporie-notebook, and passing the notebook's file path or URI as a command line argument:

$ euporie-notebook notebook.ipynb

Alternatively, launch euporie-notebook and open a notebook file by selecting "Open" from the file menu (Ctrl+O).

Console

To connect to a Jupyter kernel and run code interactively in a console session, you can run

$ euporie-console

(You can press Ctrl+Space to open the command palette in euporie-console).

Preview

To preview a notebook to the terminal, use the euporie-preview subcommand:

$ euporie-preview notebook.ipynb

Hub

To run euporie hub, a multi-user SSH server for euporie apps, run:

$ euporie-hub --port 8022 --host-keys=ssh_host_ed25519_key --client-keys=authorized_keys

where ssh_host_ed25519_key is the path to your host key file, and authorized_keys is a file containing SSH public keys allowed to connect.

Documentation

View the online documentation at: https://euporie.readthedocs.io/

The code is available on GitHub at: https://github.com/joouha/euporie

Development

Euporie is developed as a uv workspace mono-repo. The individual packages live under packages/. To set up a development environment:

$ git clone https://github.com/joouha/euporie
$ cd euporie
$ uv sync

Compatibility

Euporie requires Python 3.10 or later. It works on Linux, Windows and MacOS