Software Environments

From hpcwiki
Revision as of 11:26, 14 April 2021 by Frank Everdij (talk | contribs) (First commit)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Software Environments


Python

It is possible to install modules or create your own Python environment in your home directory if the python environment on the HPC machine is not suitable to run certain programs: Either because there are modules missing or their version are too old or too new.

This allows you to install extra modules or different versions thereof, or even an entirely different Python version.

Please note that Python 2 is now obsolete and end-of-life. Everybody should consider using Python 3 or migrating to it.

There are several ways to create an environment:


pip/pip3

Pip and its Python 3 equivalent pip3 are installation tools for the Python packages index, abbreviated to PyPI. This allows you to install new modules or programs which are not installed (yet). You can search through the package index on https://pypi.org/

For instance, if you want to install tensorflow, do:

 module load devtoolset/8
 pip3 install --user tensorflow

Pip3 will then download tensorflow and compile and install its dependent modules. When finished, you can check tensorflow's version by:

 [feverdij@hpc12:~]$ python3
 Python 3.6.8 (default, Apr  2 2020, 13:34:55) 
 [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
 Type "help", "copyright", "credits" or "license" for more information.
 >>> import tensorflow as tf
 >>> tf.__version__
 '1.14.0'

pip3 list gives a list of locally installed modules.

uninstalling pip modules can be done with :

 pip3 uninstall <name of module>

Note that sometimes pip will install different versions of system modules like numpy/scipy. Since the locally pip-installed modules takes precedence over the system ones, one may get into problems with code developed with the native system modules.

Also, if you need to install multiple programs and modules, pip can cause conflicts between programs if there are dependency conflicts. sometimes these are not easily resolvable, which means you need to up- or downgrade your modules.


virtualenv/venv

Virtualenv and venv (for python3) are a solution to pip dependency problems by creating a separate environment for a python program. It creates a directory where the virtual environment is installed. If you want to use it, you can activate that environment.

Lets try to install pytorch. First install a virtual environment:

 virtualenv pytorch

Then activte it:

 source pytorch/bin/activate

When activated, you see the environment in brackets:

 (pytorch) [feverdij@hpc12:~]$ 

Inside the environment, you can use pip to install pytorch

 pip install future torch torchvision

and check it with

 (pytorch) [feverdij@hpc12:pytorch]$ python
 Python 2.7.5 (default, Aug  7 2019, 00:51:29) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
 Type "help", "copyright", "credits" or "license" for more information.
 >>> import torch
 >>> print torch.__version__
 1.4.0

If you need to return to your normal python environment, do:

 deactivate

conda and miniconda

Another virtual environment package is conda. Short for anaconda, it is a full Python environment. A minimal/bare environment is miniconda, where packages and their dependencies can be installed with the conda package manager.

For installing specific python packages, miniconda is preferred because it uses less disk space as conda.

To install miniconda, download the installer from the anaconda website:

 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

Then execute it:

 bash Miniconda3-latest-Linux-x86_64.sh

Select a directoryname to instal. Make it a distinct name for your project, for example 'pylops' if you want to install that package. Next, it continues with:

 Do you wish the installer to initialize Miniconda3
 by running conda init? [yes|no] yes

If 'yes', the script will modify .bashrc to start the conda environment every time you log into the cluster. You can defer this choice by selecting 'no' and do

 conda init

later...

Activating a conda environment is similar to virtualenv/venv

 source pylops/bin/activate

Next, install in the conda environment your conda package:

 conda install -c conda-forge pylops

After a while verify that it has installed your package

 (base) [feverdij@hpc12:projects]$ python3
 Python 3.8.5 (default, Sep  4 2020, 07:30:14) 
 [GCC 7.3.0] :: Anaconda, Inc. on linux
 Type "help", "copyright", "credits" or "license" for more information.
 >>> import pylops
 >>> pylops.__version__
 '1.13.0'

and leave the environment with

 conda deactivate