-
Notifications
You must be signed in to change notification settings - Fork 1.7k
docs: integration with marimo guide #13691
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
48385ee
docs: marimo integration guide
akshayka 418531c
remove --seed
akshayka 2e01685
run as scripts
akshayka eb42e18
Reorganize to start with standalone usage
akshayka 9c2ac0b
Run prettier
akshayka 19b7207
Apply suggestions from code review
akshayka c7e0b13
Review comments
akshayka File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
--- | ||
title: Using uv with marimo | ||
description: | ||
A complete guide to using uv with marimo notebooks for interactive computing, script execution, | ||
and data apps. | ||
--- | ||
|
||
# Using uv with marimo | ||
|
||
[marimo](https://github.com/marimo-team/marimo) is an open-source Python notebook that blends | ||
interactive computing with the reproducibility and reusability of traditional software, letting you | ||
version with Git, run as scripts, and share as apps. Because marimo notebooks are stored as pure | ||
Python scripts, they are able to integrate tightly with uv. | ||
|
||
You can readily use marimo as a standalone tool, as self-contained scripts, in projects, and in | ||
non-project environments. | ||
|
||
## Using marimo as a standalone tool | ||
|
||
For ad-hoc access to marimo notebooks, start a marimo server at any time in an isolated environment | ||
with: | ||
|
||
```console | ||
$ uvx marimo edit | ||
``` | ||
|
||
Start a specific notebook with: | ||
|
||
```console | ||
$ uvx marimo edit my_notebook.py | ||
``` | ||
|
||
## Using marimo with inline script metadata | ||
|
||
Because marimo notebooks are stored as Python scripts, they can encapsulate their own dependencies | ||
using inline script metadata, via uv's [support for scripts](../../guides/scripts.md). For example, | ||
to add `numpy` as a dependency to your notebook, use this command: | ||
|
||
```console | ||
$ uv add --script my_notebook.py numpy | ||
``` | ||
|
||
To interactively edit a notebook containing inline script metadata, use: | ||
|
||
```console | ||
$ uvx marimo edit --sandbox my_notebook.py | ||
``` | ||
|
||
marimo will automatically use uv to start your notebook in an isolated virtual environment with your | ||
script's dependencies. Packages installed from the marimo UI will automatically be added to the | ||
notebook's script metadata. | ||
|
||
You can optionally run these notebooks as Python scripts, without opening an interactive session: | ||
|
||
```console | ||
$ uv run my_notebook.py | ||
``` | ||
|
||
## Using marimo within a project | ||
|
||
If you're working within a [project](../../concepts/projects/index.md), you can start a marimo | ||
notebook with access to the project's virtual environment via the following command (assuming marimo | ||
is a project dependency): | ||
|
||
```console | ||
$ uv run marimo edit my_notebook.py | ||
``` | ||
|
||
To make additional packages available to your notebook, either add them to your project with | ||
`uv add`, or use marimo's built-in package installation UI, which will invoke `uv add` on your | ||
behalf. | ||
|
||
If marimo is not a project dependency, you can still run a notebook with the following command: | ||
|
||
```console | ||
$ uv run --with marimo marimo edit my_notebook.py | ||
``` | ||
|
||
This will let you import your project's modules while editing your notebook. However, packages | ||
installed via marimo's UI when running in this way will not be added to your project, and may | ||
disappear on subsequent marimo invocations. | ||
|
||
## Using marimo in a non-project environment | ||
|
||
To run marimo in a virtual environment that isn't associated with a | ||
[project](../../concepts/projects/index.md), add marimo to the environment directly: | ||
|
||
```console | ||
$ uv venv | ||
$ uv pip install numpy | ||
$ uv pip install marimo | ||
$ uv run marimo edit | ||
``` | ||
|
||
From here, `import numpy` will work within the notebook, and marimo's UI installer will add packages | ||
to the environment with `uv pip install` on your behalf. | ||
|
||
## Running marimo notebooks as scripts | ||
|
||
Regardless of how your dependencies are managed (with inline script metadata, within a project, or | ||
with a non-project environment), you can run marimo notebooks as scripts with: | ||
|
||
```console | ||
$ uv run my_notebook.py | ||
``` | ||
|
||
This executes your notebook as a Python script, without opening an interactive session in your | ||
browser. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How does this section differ from
Using marimo with inline script metadata
? You may need to explain that hereThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've added more context — notebooks can be run as scripts even if they don't have inline script metadata. If you think this is redundant, or obvious, I am happy to remove this section.