### 1. Install the released version

via conda / mamba
MintPy is available on the conda-forge channel. The latest released version can be installed via `conda` as:

    conda install -c conda-forge mintpy

or via `mamba` as:

    mamba install -c conda-forge mintpy

or via docker
Docker allows one to run MintPy in a dedicated container, which is essentially an efficient virtual machine, and to be independent of the platform OS. First, install docker if you have not already done so. Then run the following to pull the latest stable released container image version from MintPy GitHub Container Registry to your local machine:

    docker pull ghcr.io/insarlab/mintpy:latest

Check docker.md for more details on Docker container image usage, e.g. pulling the development version and running in a shell or Jupyter server.

or via apt (for Linux Debian)
MintPy is available in the main archive of the Debian GNU/Linux OS. It can be installed by using your favorite package manager or running the following command:

    apt install mintpy

The same procedure, in principle, can be used in Ubuntu and all the other Debian derivatives. Check the Debian GIS Project page for more detailed usage.

### 2. Install the development version

Note: The installation note below is tested on Linux and macOS, and is still experimental on Windows (may have bugs).

MintPy is written in Python 3 and relies on several Python modules, check the requirements.txt file for details. We recommend using conda to install the python environment and the prerequisite packages, because of the convenient management and default performance setting with numpy/scipy and pyresample.

#### 2.1 Install on Linux

Click to expand for more details

#### a. Download source code

Run the following in your terminal to download the development version of MintPy:

    cd ~/tools
    git clone https://github.com/insarlab/MintPy.git

#### b. Install dependencies via conda / mamba

Install miniforge if you have not already done so. You may need to close and restart the shell for changes to take effect.

    # use wget or curl to download in the command line or click from the web browser
    # for macOS, use Miniforge3-MacOSX-x86_64.sh instead.
    wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
    bash Miniforge3-Linux-x86_64.sh -b -p ~/tools/miniforge
    ~/tools/miniforge/bin/mamba init bash

Install dependencies into a new environment, e.g. named "insar":

    # Add "isce2"      below to install extra dependencies if you use ISCE-2
    # Add "gdal"       below to install extra dependencies if you use ARIA, FRInGE or HyP3
    # Add "gdal'<3.9'" below to install extra dependencies if you use GMTSAR
    mamba create --name insar --file ~/tools/MintPy/requirements.txt

or install dependencies into an existing environment:

    # Add "isce2"      below to install extra dependencies if you use ISCE-2
    # Add "gdal"       below to install extra dependencies if you use ARIA, FRInGE or HyP3
    # Add "gdal'<3.9'" below to install extra dependencies if you use GMTSAR
    mamba activate my-existing-env
    mamba install --file ~/tools/MintPy/requirements.txt

#### c. Install MintPy

via pip [recommended]
We recommend installing MintPy in the "editable" mode. This mode installs the package without copying files to your interpreter directory (e.g. the `site-packages` directory), thus, one could "edit" the source code and have changes take effect immediately without having to rebuild and reinstall.

    python -m pip install -e ~/tools/MintPy

or via path setup
Add below in your source file, e.g. `\~/.bash_profile` for bash users or `\~/.cshrc` for csh/tcsh users:

    if [ -z ${PYTHONPATH+x} ]; then export PYTHONPATH=""; fi
    export MINTPY_HOME=~/tools/MintPy
    export PATH=${PATH}:${MINTPY_HOME}/src/mintpy/cli
    export PYTHONPATH=${PYTHONPATH}:${MINTPY_HOME}/src

#### 2.2 Install on macOS

Click to expand for more details

Install Xcode with command line tools, if you have not already done so.

- Install `Xcode` from App store

- Install `command line tools` within XCode and agree to the terms of license.

    xcode-select --install -s /Applications/Xcode.app/Contents/Developer/
    sudo xcodebuild -license

- Install XQuartz, then restart the terminal.

Install MintPy via conda [recommended], which is the same as the instruction for Linux.

Or install MintPy via MacPorts [obsolete]
Same as the instruction for Linux, except for the "b. Install dependencies" section, which is as below. Note that the installation procedure via MacPorts has not been maintained since Sep 2022, and will likely be phased out at some point, since conda/mamba works seamlessly on both MacOS and Linux. Install macports if you have not done so. Add the following at the bottom of your `~/.bash_profile` file:

    # MacPorts Installer addition on 2017-09-02_at_01:27:12: adding an appropriate PATH variable for use with MacPorts.
    export PATH=/opt/local/bin:/opt/local/sbin:${PATH}
    export MANPATH=/opt/local/share/man:${MANPATH}
    # Finished adapting your PATH environment variable for use with MacPorts.

Update the port tree with the following command. If your network prevents the use of rsync or svn via HTTP of the port tree, try Portfile Sync via a Snapshot Tarball.

    sudo port selfupdate

Install the dependencies by running the following:

    # install dependencies with macports
    # use "port -N install" to use the safe default for prompt questions
    sudo port install $(cat MintPy/docs/ports.txt)

    # install dependencies not available on macports: pysolid, pykml, pykdtree, pyresample, cdsapi
    sudo -H /opt/local/bin/pip install git+https://github.com/insarlab/PySolid.git
    sudo -H /opt/local/bin/pip install git+https://github.com/insarlab/PyAPS.git
    sudo -H /opt/local/bin/pip install git+https://github.com/tylere/pykml.git
    sudo -H /opt/local/bin/pip install git+https://github.com/storpipfugl/pykdtree.git
    sudo -H /opt/local/bin/pip install git+https://github.com/pytroll/pyresample.git
    sudo -H /opt/local/bin/pip install git+https://github.com/ecmwf/cdsapi.git

#### 2.3 Install on Windows

Click to expand for more details
Same as the instruction for Linux, except for the "c. Install MintPy" section, only the `pip install` approaches are recommended, as the `path setup` approach is not tested.

### 3. Post-Installation Setup

##### a. ERA5 for tropospheric correction

Set up an account for ERA5 to download weather re-analysis datasets for tropospheric delay correction as described in insarlab/PyAPS.

`WEATHER_DIR`: Optionally, if you defined an environment variable named `WEATHER_DIR` to contain the path to a directory, MintPy will download the GAM files into the indicated directory. Also, MintPy will look for the GAM files in the directory before downloading a new one to prevent downloading multiple copies if you work with different datasets that cover the same date/time.

##### b. Dask for parallel processing

We recommend setting the `temporary-directory` in your Dask configuration file, e.g. `~/.config/dask/dask.yaml`, by adding the following line, to avoid the potential workspace lock issue. Check the dask.md file for more details on parallel processing.

    temporary-directory: /tmp  # Directory for local disk like /tmp, /scratch, or /local

    # If you share the same machine with others, use the following instead to avoid permission issues.
    # temporary-directory: /tmp/{replace_this_with_your_user_name}

##### c. Extra environment variables setup

We recommend setting the following environment variables, e.g. in your `~/.bash_profile` file, to avoid occasional errors with GDAL VRT and HDF5 files I/O.

    export VRT_SHARED_SOURCE=0             # do not share dataset while using GDAL VRT in a multi-threading environment
    export HDF5_DISABLE_VERSION_CHECK=2    # suppress the HDF5 version warning message (0 for abort; 1/2 for printout/suppress warning message)
    export HDF5_USE_FILE_LOCKING=FALSE     # request that HDF5 file locks should NOT be used

##### d. Tab complete sub-commands

We recommend activating the tab completion as below if you:

1. Use bash or zsh shells
2. On Linux or macOS
3. Run MintPy in sub-commands style, e.g. `mintpy view` instead of `view.py`

    activate-global-python-argcomplete --user

On macOS, there is a bash version compatibility issue, which can be fixed as below. If you use the default zsh shell, no fix is needed.

Click to expand for more details
macOS ships with an older version of the bash shell (run `echo $BASH_VERSION` to check the version number), but `argcomplete` requires the newer version (>=4.2), which can be installed using Homebrew as:

    brew install bash

You will also need to add the bash to `/etc/shells` and change your shell via `chsh` as:

    echo "/usr/local/bin/bash" | sudo tee -a /etc/shells
    chsh -s "/usr/local/bin/bash"

Then run `activate-global-python-argcomplete --user` again. You may need to add the following to your `~/.bash_profile` file.

    # bash completion
    if [ -f ~/.bash_completion ]; then
        . ~/.bash_completion
    fi

GitHub « Previous Next »