# Installing Pyresample

Pyresample depends on pyproj, numpy(>= 1.10), pyyaml, configobj, six, and pykdtree (>= 1.1.1).

In order to use the pyresample plotting functionality Cartopy and matplotlib (>= 1.0) must be installed. These packages are not a prerequisite for using any other pyresample functionality.

Optionally, for dask and xarray support these libraries must also be installed. Some utilities like converting from rasterio objects to pyresample objects will require rasterio or other libraries to be installed. The older multiprocessing interfaces (Proj_MP) use the `scipy` package’s KDTree implementation. These multiprocessing interfaces are used when the `nprocs` keyword argument in the various pyresample interfaces is greater than 1. Newer xarray/dask interfaces are recommended when possible.

## Package test

Testing pyresample requires all optional packages to be installed including rasterio, dask, xarray, cartopy, pillow, and matplotlib. Without all of these dependencies some tests may fail. To run tests from a source tarball:

    tar -zxf pyresample-<version>.tar.gz
    cd pyresample-<version>
    python setup.py test

If all the tests passes the functionality of all pyresample functions on the system has been verified.

## Package installation

Pyresample is available from PyPI and can be installed with pip:

    pip install pyresample

Pyresample can also be installed with conda via the conda-forge channel:

    conda install -c conda-forge pyresample

Or directly from a source tarball:

    tar -zxvf pyresample-<version>.tar.gz
    cd pyresample-<version>
    pip install .

To install in a “development” mode where source file changes are immediately reflected in your python environment run the following instead of the above pip command:

> pip install -e .

## pykdtree and numexpr

Pyresample uses the `pykdtree` package which can be built with multi-threaded support. If it is built with this support the environment variable `OMP_NUM_THREADS` can be used to control the number of threads. Please refer to the pykdtree repository for more information.

As of pyresample v1.0.0 numexpr will be used for minor bottleneck optimization if available.