Skip to content

IPython extension for running code blocks in .py files

Notifications You must be signed in to change notification settings

UIUC-SINE/ipython-cells

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ipython-cells

This is an IPython extension for those who prefer to work in a terminal but still need the cell-by-cell execution provided by a Jupyter notebook.

Example Jupyter notebook:

Running exported notebook with ipython-cells:

Quickstart

Install the extension:

pip install ipython-cells

Convert an existing notebook to a Python file (In Jupyter):

Cell > Run All
File > Download As > python (.py)

Execute cells in iPython:

>>> %load_ext ipython_cells
>>> %load_file my_notebook.py
>>> %cell_run 1
>>> %cell_run 2
array([1.+0.j, 1.+0.j, 1.+0.j, 1.+0.j, 1.+0.j, 1.+0.j, 1.+0.j, 1.+0.j])

You can freely add/delete/rename cells in the downloaded my_notebook.py. my_notebook.py is automatically reloaded when changes are made.

Alternatively, you can create a new .py file from scratch without starting from a Jupyter notebook. See the cell delimiter syntax.

Other Features

Spyder cell delimiter syntax is also supported:

# %% cell1
print('hello')

# %% cell2
print('world')

Other commands:

# cell ranges - run all cells from beginning of file to cell2 (inclusive)
>>> %cell_run ^cell2
hello
world

# cell ranges - run all cells from cell1 (inclusive) to end of file
>>> %cell_run cell1$
hello
world

# list available cells for running
>>> %list_cells
['__first', 'cell1', 'cell2']

Automatically Load Extension

To load extension on IPython start, add this to ~/.ipython/profile_default/ipython_config.py

c.InteractiveShellApp.extensions = [
    'ipython_cells'
]

Autoreloading

# load example.py with autoreloading
%load_file example.py

%cell_run cell1
10
# example.py is modified by an external editor (e.g. `a = 10`  ->  `a = 20`)
# File change is detected and automatically reloaded
%cell_run cell1
20

Auto reloading can be disabled with %load_file example.py --noreload

Cell Delimiter Syntax

Cells are delimited by special comments. Both Jupyter and Spyder style cells are supported. Below are different variations of a cell called foobar_cell.

  • # %% foobar_cell
  • # In[foobar_cell]
  • # %% foobar_cell some extra text
  • # In[foobar_cell] some extra text

Running Exported Jupyter Notebooks

This extension can run exported Jupyter notebooks. (File > Download As > python (.py)).

Be sure to run all cells before exporting so they are assigned an index. (Cell > Run All).

Tests

cd tests
ipython3 tests.py

About

IPython extension for running code blocks in .py files

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published