https://github.com/answerdotai/execnb
Execute a jupyter notebook, fast, without needing jupyter
https://github.com/answerdotai/execnb
answerai answerdotai fastai jupyter nbdev notebook
Last synced: about 1 month ago
JSON representation
Execute a jupyter notebook, fast, without needing jupyter
- Host: GitHub
- URL: https://github.com/answerdotai/execnb
- Owner: AnswerDotAI
- License: apache-2.0
- Created: 2022-06-05T18:02:53.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-04-05T23:50:34.000Z (10 months ago)
- Last Synced: 2025-05-11T21:06:22.478Z (9 months ago)
- Topics: answerai, answerdotai, fastai, jupyter, nbdev, notebook
- Language: Jupyter Notebook
- Homepage: https://answerdotai.github.io/execnb/
- Size: 1.07 MB
- Stars: 131
- Watchers: 2
- Forks: 11
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# execnb
[](https://github.com/fastai/execnb/actions/workflows/test.yaml)
[](https://github.com/fastai/execnb/actions/workflows/deploy.yaml)
## Install
Either:
pip install execnb
or if you use conda:
conda install -c fastai execnb
(You can replace `conda` with `mamba` in the line above if you have
mamba installed.)
## How to use
Use
[`CaptureShell`](https://AnswerDotAI.github.io/execnb/shell.html#captureshell)
to run Jupyter code and capture notebook outputs, without running a
Jupyter server (or even having it installed):
``` python
from execnb.nbio import *
from execnb.shell import *
from fastcore.utils import *
```
``` python
s = CaptureShell()
s.run('1+1')
```
[{'data': {'text/plain': ['2']},
'metadata': {},
'output_type': 'execute_result',
'execution_count': 1}]
To execute a notebook and save it with outputs filled in, use
[`CaptureShell.execute`](https://AnswerDotAI.github.io/execnb/shell.html#captureshell.execute):
``` python
try:
s.execute('../tests/clean.ipynb', 'tmp.ipynb')
print(read_nb('tmp.ipynb').cells[1].outputs)
finally: Path('tmp.ipynb').unlink()
```
[{'name': 'stdout', 'output_type': 'stream', 'text': ['1\n']}, {'data': {'text/plain': ['2']}, 'execution_count': 3, 'metadata': {}, 'output_type': 'execute_result'}]
You can also execute notebooks from the command line with
[`exec_nb`](https://AnswerDotAI.github.io/execnb/shell.html#exec_nb):
``` python
!exec_nb --help
```
usage: exec_nb [-h] [--dest DEST] [--exc_stop] [--inject_code INJECT_CODE]
[--inject_path INJECT_PATH] [--inject_idx INJECT_IDX]
[--verbose]
src
Execute notebook from `src` and save with outputs to `dest`
positional arguments:
src Notebook path to read from
optional arguments:
-h, --help show this help message and exit
--dest DEST Notebook path to write to (default: )
--exc_stop Stop on exceptions? (default: False)
--inject_code INJECT_CODE Code to inject into a cell
--inject_path INJECT_PATH Path to file containing code to inject into a cell
--inject_idx INJECT_IDX Cell to replace with `inject_code` (default: 0)
--verbose Show stdout/stderr during execution (default: False)