Installing ODL from source

This installation method is intended for developers who want to make changes to the code and users that need the cutting edge.


Instructions for the impatient:

  • Clone ODL from git:

    $ git clone
  • Install ODL

    $ cd odl
    $ pip install [--user] --editable .

    Don’t use the --user option together with conda.

  • Install the extensions you want.


This guide assumes that the Git version control system is available on your system; for up-to-date instructions, consult the Git installation instructions. You also need pip to perform the installation.


You should consider performing all described steps in a conda environment – it gives you the same encapsulation benefits as developer that you would enjoy also as a user (no conflicting packages, free to choose Python version, …). See the Installing Anaconda section for setup instructions.

To get ODL, navigate to a folder where you want the ODL repository to be stored and clone the repository with the command

$ git clone

No GitHub account is required for this step.

In a conda environment

This part assumes that you have activated a conda environment before (see Installing Anaconda).

You can choose to install dependencies first:

  • On Linux/MacOS:

    $ conda install nomkl numpy scipy future matplotlib
  • On Windows:

    $ conda install numpy scipy future matplotlib

After that, enter the top-level directory of the cloned repository and run

$ pip install --editable .

Optional dependencies:

You may also want to install optional dependencies:

$ conda install matplotlib pytest pytest-pep8

Using only pip

Enter the top-level directory of the cloned repository and run

$ pip install --user --editable .


Don’t forget the “.” (dot) at the end - it refers to the current directory, the location from where pip is supposed to install ODL.


We recommend the --editable option (can be shortened to -e) since it installs a link instead of copying the files to your Python packages location. This way, local changes to the code (e.g. after a git pull) take immediate effect after reloading the package, without requiring re-installation.

Optional dependencies:

You may also want to install optional dependencies:

$ pip install --user .[testing, show]

Extra dependencies

As a developer, you may want to install further optional dependencies. Consult the pip or conda guide for further instructions.

Running the tests

Unit tests in ODL are based on pytest. They can be run either from within odl or by invoking pytest directly.

First, you need to install the testing dependencies using your favorite method below.

  • Using conda:

    $ conda install pytest
  • Using pip:

    $ pip install --user odl[testing]

Now you can check that everything was installed properly by running

$ python -c "import odl; odl.test()"


If you have several versions of ODL and run this command in the top-level directory of an ODL clone, the tests in the repository will be run, not the ones in the installed package.

You can also use pytest directly in the root of your ODL clone:

$ pytest

For more information on the tests, see Testing in ODL.

Further developer information

See Contributing to ODL for more information.