.. _install:

============
Installation
============

From binary packages
====================

Pip
---
Install binary packages from `PyPI <https://pypi.org/project/openturns/>`_::

    pip3 install openturns

For an installation without administrative privileges the option :code:`--user` can be used.
Note that pip does not install pre-releases unless given the option :code:`--pre`.

Conda
-----
This is relevant to the `Conda <http://conda.pydata.org/>`_ userland Python package manager.

As binary dependency packages from the `conda-forge <https://conda-forge.org>`_
channel are not compatible with ones from the default channel, openturns packages
are not working on top of Anaconda.
Instead, we recommend installing conda from `Miniforge <https://github.com/conda-forge/miniforge>`_
where conda is configured to prioritize packages from conda-forge out of the box.
On Windows just download the matching miniforge exe and follow the instructions,
on Linux you can install it from command-line in one go::

    wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -P /tmp
    bash /tmp/Miniforge3-Linux-x86_64.sh -b -p $HOME/miniforge
    PATH="$HOME/miniforge/bin:$PATH"

Then it should be ready to install packages::

    conda install -y openturns

Note that conda can be slow or fail at resolving complex environments with many packages
so when a full upgrade is needed our advice is to create a new environment from scratch.

Alternatively, you can download the `otconda <https://github.com/openturns/otconda>`_ bundle
containing the library and its modules that allows for an offline installation.

Windows/macOS
-------------
Installation options include pip and conda.

Debian/Ubuntu
-------------
Packages should be available from default repositories but our repository will always provide the latest version.
This also applies to other Debian/Ubuntu-based distributions like Linux Mint, Kali Linux, ParrotOS, PureOS, Raspberry Pi OS, ...
First create an entry in the apt configuration matching your distribution family and codename
if available in one of the following commands::

    echo deb [signed-by=/usr/share/keyrings/openturns-keyring.gpg] https://openturns.github.io/apt/ubuntu resolute main | sudo tee /etc/apt/sources.list.d/openturns.list
    echo deb [signed-by=/usr/share/keyrings/openturns-keyring.gpg] https://openturns.github.io/apt/ubuntu noble main | sudo tee /etc/apt/sources.list.d/openturns.list
    echo deb [signed-by=/usr/share/keyrings/openturns-keyring.gpg] https://openturns.github.io/apt/ubuntu jammy main | sudo tee /etc/apt/sources.list.d/openturns.list
    echo deb [signed-by=/usr/share/keyrings/openturns-keyring.gpg] https://openturns.github.io/apt/debian trixie main | sudo tee /etc/apt/sources.list.d/openturns.list
    echo deb [signed-by=/usr/share/keyrings/openturns-keyring.gpg] https://openturns.github.io/apt/debian bullseye main | sudo tee /etc/apt/sources.list.d/openturns.list
    echo deb [signed-by=/usr/share/keyrings/openturns-keyring.gpg] https://openturns.github.io/apt/debian bookworm main | sudo tee /etc/apt/sources.list.d/openturns.list

.. note::

    Use the bash command `lsb_release -a` in order to determine the codename of your distribution.

Then add the mirror signature and update the package database::

    sudo apt install -y curl gnupg
    curl -fsSL https://openturns.github.io/apt/public.key | sudo gpg --dearmor --yes --output /usr/share/keyrings/openturns-keyring.gpg
    sudo apt update

At this point the following new packages should be available via the package manager:

.. table::

    +----------------------+------------------------------------+
    | Package name         | Description                        |
    +======================+====================================+
    | libopenturns0.x      | library                            |
    +----------------------+------------------------------------+
    | libopenturns-dev     | development package                |
    +----------------------+------------------------------------+
    | python3-openturns    | Python module                      |
    +----------------------+------------------------------------+

To install the Python module::

    sudo apt install python3-openturns

RPM-based distributions
-----------------------
Add the repository corresponding to your operating system::

    curl https://download.opensuse.org/repositories/science:/openturns/Fedora_44/science:openturns.repo -o /etc/yum.repos.d/science-openturns.repo
    curl https://download.opensuse.org/repositories/science:/openturns/Fedora_43/science:openturns.repo -o /etc/yum.repos.d/science-openturns.repo
    curl https://download.opensuse.org/repositories/science:/openturns/16.0/science:openturns.repo -o /etc/zypp/repos.d/science-openturns.repo
    curl https://download.opensuse.org/repositories/science:/openturns/Mageia_9/science:openturns.repo -o /etc/yum.repos.d/science-openturns.repo

Import the gpg key corresponding to your operating system::

    rpm --import https://download.opensuse.org/repositories/science:/openturns/Fedora_44/repodata/repomd.xml.key
    rpm --import https://download.opensuse.org/repositories/science:/openturns/Fedora_43/repodata/repomd.xml.key
    rpm --import https://download.opensuse.org/repositories/science:/openturns/16.0/repodata/repomd.xml.key
    rpm --import https://download.opensuse.org/repositories/science:/openturns/Mageia_9/repodata/repomd.xml.key

The following packages are available:

.. table::

    +----------------------+------------------------------------+
    | Package name         | Description                        |
    +======================+====================================+
    | openturns-libs       | library                            |
    +----------------------+------------------------------------+
    | openturns-devel      | development package                |
    +----------------------+------------------------------------+
    | python3-openturns    | Python module                      |
    +----------------------+------------------------------------+

To install the Python module::

    yum install python3-openturns

Archlinux
---------
Install from `AUR <https://aur.archlinux.org/packages/openturns/>`_::

    aurman -S openturns

FreeBSD
-------
Install from `FreshPorts <https://www.freshports.org/math/openturns/>`_::

    pkg install openturns

NixOS
-----
One of the possibility is to install it directly with::

    nix-shell -p openturns

Spack
-----
Install the library with `Spack package manager <https://spack.io/>`_::

    spack install openturns

Guix
----
A package is available for guix::

    guix install python-openturns

Vcpkg
-----
Install the C++ library from `vcpkg.io <https://vcpkg.io/en/package/openturns>`_::

    vcpkg install openturns

MSYS2
-----
The library is available with different architectures/runtime flavors::

    pacman -S mingw-w64-x86_64-openturns
    pacman -S mingw-w64-ucrt-x86_64-openturns
    pacman -S mingw-w64-clang-x86_64-openturns
    pacman -S mingw-w64-clang-aarch64-openturns

Development version
===================

From source
-----------
Refer to the :ref:`library_development` section.

Weekly builds
-------------
Weekly built Python binaries are also available with the latest bugfixes and features, use at your own risk::

    pip3 install --pre --extra-index-url https://pypi.anaconda.org/openturns-wheels-nightly/simple --upgrade --force-reinstall openturns
