Install Python on Linux

Any Linux distribution (Debian/Ubuntu, Fedora, etc) provides packages for Python and for many Python modules. This approach, however, runs into difficulties if one needs Python modules that are not available in the distribution. Installing them using the Python package manager Pip can cause inconsistencies and break the system. Therefore, distributions at some point (e.g. Debian 12) disabled Pip, which terminates with error: externally-managed-environment. While this behavior can be overridden by a special flag, we advise against. Rather, we recommend escaping from Python version hell by using the Python version manager pyenv.

Requirements

To provide a backend for the Python plotting module matplotlib, install the GUI toolkit Tk before installing pyenv (otherwise, you will need to rerun pyenv install <version>).

Distribution Package
Debian tk-dev
Redhat tk-devel
Archlinux Tk

Python in pyenv

Prepare the shell by adding

export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

to ~/.bashrc (or whatever startup configuration file), and restart the shell.

Then:

# install pyenv
curl https://pyenv.run | bash

#install Python
pyenv install 3.11
pyenv global 3.11
which python # shows path in virtual environment

#install Python modules
pip install numpy

etc. For the full list of modules required by BornAgain, see the modules page.