Python on IDUN cluster is available in different forms.
1. Use module with Python and preinstalled libraries/modules
IDUN has multiple (Environment) modules with Python that includes different set of Python packages. These modules are more popular because they have a lot of preinstalled libraries/modules. For example:
- Anaconda
- PyTorch
- Tensorflow
- SciPy
2. Use module Python (recommended)
You will get plain Python: not customized, no extra libraries.
This command can list available Python releases (at the moment of writing).
$ module avail Python
. . .
Python/3.9.6-GCCcore-11.2.0
Python/3.10.4-GCCcore-11.3.0
Python/3.10.8-GCCcore-12.2.0
Python/3.11.3-GCCcore-12.3.0
To start using one of these modules use this command:
$ module load Python/3.11.3-GCCcore-12.3.0
$ python -V
Python 3.11.3
2.1. Use a Virtual Environment to install packages (recommended)
Virtual environments are useful when you need to use different versions of Python packages.
There are different implementations of "Virtual environments" in Python. This is example with "venv".
"venv" is included in the standard library starting from Python 3.3
This is an example with 2 Python virtual environments and different "numpy" releases and the first virtual environment will get the latest "pandas" package as well.
Load the Python module and create 2 virtual environments:
$ module load Python/3.11.3-GCCcore-12.3.0
$ python -m venv /cluster/home/[USERNAME]/PyEnv1
$ python -m venv /cluster/home/[USERNAME]/PyEnv2
Activate first environment and install numpy 1.24.3
$ source /cluster/home/[USERNAME]/PyEnv1/bin/activate
(PyEnv1) $ pip install numpy==1.24.3
(PyEnv1) $ pip install pandas
Deactivate first environment:
(PyEnv1) $ deactivate
Activate the second environment and install numpy 1.22.0
$ source /cluster/home/[USERNAME]/PyEnv2/bin/activate
(PyEnv2) $ pip install numpy==1.22.0
(PyEnv2) $ deactivate
2.3. Reproducing a Python Virtual Environment (recommended)
This is an example to reproduce the Virtual Environment created above "PyEnv1".
Load Python (if not loaded), activate the environment, generate a requirements.txt file, and deactivate the environment.
$ module load Python/3.11.3-GCCcore-12.3.0
$ source /cluster/home/[USERNAME]/PyEnv1/bin/activate
(PyEnv1) $ pip freeze > requirements.txt
(PyEnv1) $ deactivate
This is just a text file with package names and release versions. You can edit it if needed.
$ cat requirements.txt
numpy==1.24.3
pandas==2.1.4
python-dateutil==2.8.2
pytz==2023.3.post1
six==1.16.0
tzdata==2023.4
Create a new virtual environment, activate, and install packages listed in the file requirements.txt
$ python -m venv /cluster/home/[USERNAME]/PyEnv3
$ source /cluster/home/[USERNAME]/PyEnv3/bin/activate
(PyEnv3) $ pip install -r requirements.txt
Virtual Environment "PyEnv1" and "PyEnv3" are identical now.
2.4. Install packages with pip (Not recommended)
This method is not recommended. Because only one version can be installed. And it can affect future python modules. Use Python Virtual Environment instead.
Example: Install "numpy" package in your home directory:
pip install --user numpy
These python modules will be installed to your cluster home directory: /cluster/home/[USERNAME]/.local/lib/python3.11/