# Installation

## Requirements

Python 2.7 or Python >= 3.5 is required. Additionally the following packages are required in order to work properly:

> - setuptools
> - six
> - numpy
> - scipy
> - astropy
> - PyYaml
> - matplotlib
> - python-dateutil
> - enum34 (Python 2.7 only)

Cython is required if you build the code from the development repository:

> - Cython

The following packages are optional, for building documentation and testing:

> - sphinx to build the documentation
> - pytest for testing

## Installing numina

The preferred methods of installation are pip or conda, using prebuilt packages.

### Using pip

Run:

    pip install numina

Pip will download all the required dependencies and a precompiled versión of numina (if it exists for your platform) from PyPI.

Note

If possible, pip will install a precompiled version of numina in wheel format. If such a version does not exist, pip will download and compile the source code. Numina has some portions of C and C++ code. You will need a C/C++ compiler such as `gcc` or clang (see Building from source below)

Pip can install packages in different locations. You can use the `--user` option to install packages in your home directory.

Our recomended option is to perform isolated installations using virtualenv or venv. Create a virtual environment and run pip inside it. For example, with `venv`:

    python3 -m venv numina020
    source numina020/bin/activate
    (numina20) pip install numina
    (numina20) deactivate

See _abba_install for details

Warning

Do not use `sudo pip` unless you really really know what you are doing.

### Using conda

Numina packages for conda are provided in the conda-forge channel. To install the latest version of numina run:

    conda update -c conda-forge numina

## Building from source

You may end up building from source if there is not a precompiled version of numina for your platform or if you are doing development based on numina.

### Prerequisites

You will need a compiler suite and the development headers of Python and Numpy.

If you are building the development version of numina, you will need Cython to translate Cython code into C/C++. If your source code is from a release, the translated files are included, and hence do not require Cython.

The released sources of numina can be downloaded from PyPI. If you require instead the he development version, it can can be checked out with:

    git clone https://github.com/guaix-ucm/numina.git

### Building ad installing

To build numina run:

    python setup.py build

Note

In macOS Mojave, the compilation will fail unless the following environment variable is defined:

    export MACOSX_DEPLOYMENT_TARGET=10.9

To install numina run:

    python setup.py build

If you get an error about insufficient permissions to install, you are probably trying to access directories owned by root. Try instead:

    python setup.py install --user

or perform the installation inside an isolated environment, such as conda or venv.

Warning

Do not `sudo python setup.py install` unless you really really know what you are doing.

## Building the documentation

The Numina documentation is base on sphinx. With the package installed, the html documentation can be built from the doc directory:

    $ cd doc
    $ make html

The documentation will be copied to a directory under build/sphinx.

The documentation can be built in different formats. The complete list will appear if you type make