Introduction to installed packages on Athena

Packages are available on Athena via the environment modules system.

Where possible, you are advised to use the precompiled and installed packages rather than compiling your own. Installed packages are tested and optimised. If you feel that a package could be imprived, then please contact your local support contact as we welcome comments for improvement.

If you have additional test cases you wish to see packages tested against, please also contact us.

Seeing what is available

You can run

module avail

to see an extensive list, or

module avail keyword

to see things related to a particular keyword.

To see the versions related to a particular package use

module avail packagename

Names, versions, flavours


Most modules are given the following: package name, version number or name, and flavour. Package name is often a single word, such as gcc, but can be longer, e.g. the intel set of modules are of the form intel/toolname, for example intel/mpi and Python modules are of the form python/toolname, e.g. python/pandas as a package name.


These are the main version numbers, e.g. 1.0, 10Aug2016, or 2.3p3 as possible examples.


These are further identifiers. For many packages they are simple numeric values such as 1, 2, which represent different versions which might be related to different compilation options, or other fixes. For example 1 might use OpenMPI, and 2 Intel MPI. Or alternatively 1 might be compiled with the flag -O2 and 2 with flag -O3.

Rather than make the flavour versions very long, they are kept short and documented.

Default modules


In the output those versions which are explicitly set as defaults have the identifier (default) specified.

For those without explicit defaults then the lexically latest version is used.


E.g. for a package packagename/verson1/a and packagename/version1/b then if you run

module load packagenbame/version1

then flavour b will be loaded.

Loading modules

The following can be used:

module load packagename

This will load the lexically last version number, and lexically last flavour name of that version number


module load packagename/versionnumber

This will load the lexically last flavour name for packagename/versionnumber


module load packagename/versionnumber/flavourname

which loads an exact package, version, flavour

Listing loaded modules


module list

to show what is loaded


You cannot load two versions of the same module.

This may occasionally present issues if modules load other modules, and there are conflicting versions. This is most common in workflows of several items in a script in which case use:

module purge
module load a b c d
module purge
module load p q r s

will work in many instances.