Run notebooks as scripts¶
You can run marimo notebooks as scripts at the command line, just like any other Python script. For example,
The python command uses your current environment, which must contain marimo and the
notebook's dependencies. Activate it first if you manage it yourself.
uv and Pixi can prepare the environment and run the script using its declared dependencies.
Running a notebook as a script is useful when your notebook has side-effects, like writing to disk. Print statements and other console outputs will show up in your terminal.
You can also import functions and classes from notebooks into other Python programs.
Running with declared dependencies¶
Use your package manager to run a notebook with its declared requirements.
Running with inline dependencies¶
A sandboxed notebook declares its requirements as inline script metadata (PEP 723). uv and Pixi can read that metadata, prepare an environment, and run the notebook without opening the editor:
Use Pixi for notebooks that require Conda dependencies declared under
tool.pixi. Running a notebook with python directly does not install its
inline requirements.
Running in a project¶
For a notebook that uses project dependencies, run it from the project directory:
If the notebook contains inline script metadata, uv uses that metadata instead of the project's dependencies.
pixi run python uses the workspace environment. Use pixi run --script notebook.py
instead to prepare an environment from the notebook's inline requirements.
See package management for choosing between project dependencies and a notebook sandbox.
Check before running
Before running a notebook as a script, you can use marimo's linter to check for issues that might prevent execution:
See the Lint Rules guide for more information about marimo's linting system.
Saving notebook outputs
To run as a script while also saving HTML of the notebook outputs, use
You can also pass command-line arguments to your notebook during export. Separate these args from the command with two dashes:
Exporting to other formats, such as ipynb, is also possible:
Command-line arguments¶
When run as a script, you can access your notebook's command-line arguments
through sys.argv, just like any other Python program. This also
means you can declare your notebook's command-line arguments using Python
libraries like argparse
and simple-parsing.
These examples shows how to conditionally assign values to variables based on command-line arguments when running as a script, and use default values when running as a notebook.
argparse¶
simple-parsing¶
Example: scheduled execution¶
marimo notebooks are Python files, so any scheduler that runs Python scripts can run marimo notebooks. This includes cron, Airflow, Prefect, and other tools. You can pass variables from the command line and reuse functions from notebooks in other jobs as well.
GitHub Action¶
Run notebooks on a schedule with GitHub Actions. This example assumes inline dependencies: