Content from Finding and loading a module
Last updated on 2026-10-28 | Edit this page
Overview
Questions
- Which command lists only the modules you can load right now, and which command searches the rest?
- Which Python module is the EESSI 2025.06 default, and what does
python3 --versionprint? - Where do you load
QCG-PilotJobifmodule spidercannot find it in EESSI?
Objectives
- Use
module avail,module spider,module load,module list,module unload, andmodule purge. - Load
Python/3.13.5-GCCcore-14.3.0and readPython 3.13.5. - Switch to EESSI 2023.06 only after a purge, and read
Python 3.11.5. - State that
QCG-PilotJobis a site module and is not in the EESSI tree.
Two lists
module avail prints modules you can load in this shell,
right now. EESSI is hierarchical. A Python build sits behind the stack
module, and often behind a compiler module. Until those are loaded,
module avail Python can be empty or short. That does not
mean Python is missing.
module spider searches the whole tree. It finds names
that module avail hides. module spider Python
is the search you want when you know the program and not the
compiler.
module help prints the command options.
module whatis Python/3.13.5-GCCcore-14.3.0 prints the short
description stored in that module file. module list prints
what this shell has loaded. ml is the short form of
module once the init script has run. ml Python
is the same action as module load Python.
| Command | What it does |
|---|---|
module avail |
Modules you can load right now |
module spider |
Every matching module, including hidden ones |
module load |
Puts a module in this shell |
module unload |
Removes one module |
module list |
Shows what is loaded |
module purge |
Removes all modules |
module whatis |
Prints the module’s short description |
One Python from the 2025.06 stack
Load the stack the way your tab shows, then search.
BASH
[YOUR_LOGIN@LOGIN ~]$ module load 2025
[YOUR_LOGIN@LOGIN ~]$ module spider Python
[YOUR_LOGIN@LOGIN ~]$ module load Python/3.13.5-GCCcore-14.3.0
[YOUR_LOGIN@LOGIN ~]$ python3 --version
python3 --version prints Python 3.13.5.
In EESSI 2025.06 the Python modules include:
Python/3.12.3-GCCcore-13.3.0Python/3.13.1-GCCcore-14.2.0-
Python/3.13.5-GCCcore-14.3.0(the default)
The name has the version and the GCCcore it was built
with. Load the default:
python3 --version prints Python 3.13.5.
which python3 prints a path under
/cvmfs/software.eessi.io/versions/2025.06/. The CPU
directory in the middle of that path is the one the init script chose.
It is not /usr/bin/python3.
On Snellius, module load 2025 selects the site 2025
stack. If module spider Python does not list
Python/3.13.5-GCCcore-14.3.0, load the newest 3.13 it does
list and write that full name in your notes. Do not invent a
version.
A faded load, for the stack this course uses:
The module is Python/3.13.5-GCCcore-14.3.0. The version
line is Python 3.13.5.
Unload one, or clear the shell
module unload Python/3.13.5-GCCcore-14.3.0 removes that
Python. The stack module can stay loaded. module list no
longer includes the Python name.
module purge removes every module.
module list then reports that no modules are loaded. Purge
is the step between stacks.
EESSI 2023.06 has Python/3.11.5-GCCcore-13.2.0. After a
purge:
python3 --version prints Python 3.11.5. Do
not load EESSI/2025.06 and EESSI/2023.06 in
one shell. Do not source the 2025.06 init script and then
module load 2025 on top of it. Two stacks in one shell is
how two Pythons end up on PATH.
Conda stays separate
A Conda environment and a loaded module often conflict. The site
stack is the supported copy. Do not mix a Conda activate
with these modules in the same shell.
QCG-PilotJob is not in EESSI
module spider QCG-PilotJob in an EESSI-only shell does
not find it. The tool is not part of the 2025.06 release. Do not spend
the episode walking the CVMFS tree looking for it.
On the clusters it is a site module. The load line is the tab, not a path you guess.
module load 2024 selects the EESSI 2025.06 stack on this
cluster and is the load line that comes before
QCG-PilotJob.
Course scripts name QCG-PilotJob/0.14.1-gfbf-2024a after
the stack load. If spider prints that name, load it. If spider prints a
different full name, load the name it prints. The container will still
not have it. Later episodes that need the pilot use the cluster.
Login node
python3 --version and module list are fine
on the login node. A long Python script is not. The login node is
shared. Send the long run to the queue.
Predict the version lines
Write down the two version lines before you run the block. Use a shell you are allowed to purge.
In the container, or on any machine where
/cvmfs/software.eessi.io is mounted:
BASH
module purge
source /cvmfs/software.eessi.io/versions/2025.06/init/lmod/bash
module load Python/3.13.5-GCCcore-14.3.0
python3 --version
module purge
module load EESSI/2023.06
module load Python/3.11.5-GCCcore-13.2.0
python3 --version
On a cluster, do not source the init script in a shell where you also
ran module load 2025. Use the tab’s load command for the
2025 stack, check python3 --version, purge, and only then
try EESSI/2023.06. If that module name does not exist on
Snellius, stop. Do not load a second stack on top of the first.
In the EESSI client the two python3 --version lines
are:
Python 3.13.5
Python 3.11.5
The first comes from Python/3.13.5-GCCcore-14.3.0 on
EESSI 2025.06. The second comes from
Python/3.11.5-GCCcore-13.2.0 on EESSI 2023.06.
module purge between them is required.
which python3 for the first load starts with
/cvmfs/software.eessi.io/versions/2025.06/.
On Snellius, if the 3.13.5 module name is absent, the version line is
the one for the module you actually loaded. Record that name. A missing
EESSI/2023.06 is a stop, not a reason to skip the
purge.
If the init script stops because a variable is unset, run
set +u before source and set -u
afterwards. The two version lines do not change.
List, unload, purge
Load the 2025.06 default Python. Run module list. Unload
that Python module and run module list again. Purge and run
module list a third time. What happens to the Python
name?
After the load, module list includes
Python/3.13.5-GCCcore-14.3.0. Other modules may be there
too, because loading Python also loads the libraries it needs. That is
expected.
After module unload Python/3.13.5-GCCcore-14.3.0, that
name is gone. The stack module can still be listed.
After module purge, module list reports
that no modules are loaded. The next python3 is no longer
the stack copy unless something else on PATH provides
one.
Search for a module that is not in the stack
Run module spider QCG-PilotJob in a shell that has only
EESSI loaded. Then look at the tab above and say where the tool actually
comes from.
Spider reports that it cannot find QCG-PilotJob in the
EESSI tree. That result is correct. The tool is not in the 2025.06
release.
On a cluster, load it the way the tab shows: the stack name first
(module load 2025 on Snellius,
module load 2024 on the course cluster), then
module load QCG-PilotJob. module list then
includes QCG-PilotJob. The full name in the course scripts
is QCG-PilotJob/0.14.1-gfbf-2024a when spider lists that
name.
The container has no site module to add. A failed spider search there does not mean you should install a private copy during this lesson.
-
module availis the current level.module spidersearches the rest. -
module loadselects.module unloadremoves one.module purgeclears the shell. - EESSI 2025.06 default Python is
Python/3.13.5-GCCcore-14.3.0, andpython3 --versionprintsPython 3.13.5. - EESSI 2023.06 has
Python/3.11.5-GCCcore-13.2.0. Purge before you load it. -
QCG-PilotJobis a site module. Spider does not find it in EESSI.
Content from The EESSI client container
Last updated on 2026-10-28 | Edit this page
Overview
Questions
- How do you get the EESSI 2025.06 stack when you have no cluster login?
- What do
$EESSI_VERSIONand$EESSI_CVMFS_REPOprint, and what does the CPU line mean? - Which commands are missing inside the client?
Objectives
- Start the EESSI client with Apptainer and source the 2025.06 init script.
- Read
2025.06from$EESSI_VERSIONand/cvmfs/software.eessi.iofrom$EESSI_CVMFS_REPO. - Treat
x86_64/intel/sapphirerapidsas one example CPU line, not as your required path. - Show that
sbatchis absent and thatpython3 --versionstill printsPython 3.13.5.
The same tree, no queue
The cluster episodes use a module command the site provides. When you have no login, the EESSI client container mounts the same CVMFS repository and gives you the same init script.
The client is an Apptainer container. Apptainer 1.0 or newer is
required, with --fusemount support. The mount makes
/cvmfs/software.eessi.io exist inside the container. That
is why the init script path works. The image is
docker://ghcr.io/eessi/client:rocky8.
There is no Slurm inside the container. sbatch and
squeue are not installed. hostname prints the
container’s own name, not a cluster node. Use the container for
module and python3. Use Snellius or the course
cluster when the work must go through a queue.
The first launch downloads the image and can take a few minutes. Later launches are shorter.
Start the client
The directories under $HOME/eessi-work hold the CVMFS
state and the home directory you see inside the container. The bind
mounts give the container somewhere to write that state. You create them
once.
Type along
Run the tab on a machine where Apptainer works. If you are already on Snellius or the course cluster, read the tab and do not start a second copy of the stack in this shell.
You do not need the client container when you are on the course
cluster. module load 2025 loads EESSI 2025.06.
The Snellius and course-cluster tabs say you do not need the container there. The remaining tab is the launch. Inside the container, the next command is the init script:
The script loads EESSI/2025.06. It prints that the
module loaded, which CPU it selected, and whether it saw a GPU. One host
printed:
Module for EESSI/2025.06 loaded successfully
EESSI has selected x86_64/intel/sapphirerapids as the compatible CPU target for EESSI/2025.06
EESSI did not identify an accelerator on the system
x86_64/intel/sapphirerapids is an example. A laptop, a
different server, or another container host can print a different CPU.
Read your line. Do not paste this example into PATH.
Two variables that stay put
The CPU directory can change. Two variables do not:
$EESSI_VERSION prints 2025.06.
$EESSI_CVMFS_REPO prints
/cvmfs/software.eessi.io.
If either line is empty, the init script did not run in this shell.
Source it again. Do not also module load 2025 here. The
container has no module by that name, and stacking a second init on top
of the first is the same mistake as loading two stacks.
Then load the default Python from the previous episode:
python3 --version prints Python 3.13.5.
which python3 starts with
/cvmfs/software.eessi.io/versions/2025.06/.
Login node
This container is not a login node, and it is not a place to avoid
the queue by running a long job. python3 --version is the
check. A long script waits until you have sbatch on a
cluster.
2025.06
/cvmfs/software.eessi.io
The first line is the stack the init script loaded. The second is the CVMFS repository, not a directory under your home. An empty line means the init script has not been sourced in this shell.
Your CPU line, not the example
Copy the CPU line the init script printed into your notes. Does it
have to be x86_64/intel/sapphirerapids? What would go wrong
if a job script hardcoded that directory?
It does not have to be x86_64/intel/sapphirerapids. That
string is one host’s example. Your line should contain a CPU target
under x86_64/ (or another architecture the script supports)
and the words that name the compatible CPU.
A hardcoded sapphirerapids path fails on a machine whose
init script selected a different CPU. The builds in that directory match
the CPU that was detected, not the CPU written in someone else’s notes.
Let the init script select the directory.
no-sbatch
Python 3.13.5
command -v sbatch prints nothing and returns a failure
status, so the shell prints no-sbatch. The client has no
Slurm. squeue is missing for the same reason.
Python 3.13.5 is the EESSI 2025.06 default module, the
same string as on a cluster that has
Python/3.13.5-GCCcore-14.3.0. The stack matches. The queue
does not. Submit jobs on Snellius or the course cluster, not in this
shell.
- The EESSI client is an Apptainer container that mounts
/cvmfs/software.eessi.io. - The init script is
source /cvmfs/software.eessi.io/versions/2025.06/init/lmod/bash. -
$EESSI_VERSIONprints2025.06.$EESSI_CVMFS_REPOprints/cvmfs/software.eessi.io. - The CPU line
x86_64/intel/sapphirerapidsis an example and may differ. - The container has no
sbatch.python3 --versionstill printsPython 3.13.5.