Python

There are multiple versions of Python installed on Spartan, which you can check using module spider Python.

The default/main Python is 3.10.4.

For application build with anyother version of Python, we have suffix such as

mpi4py/3.1.4-Python-3.11.3
Please do not mix the Python version.

Common packages like numpy are already installed with some versions, but may be missing from others.

  • If a Python package is missing, we recommend that you install additional packages locally using pip install into a virtualenv on the login node.

Example

[scrosby@spartan-login1 ~]$ module load GCCcore/11.3.0; module load Python/3.10.4

Virtualenvs allow you to separate Python workspaces, allowing you to have different workspaces for different purposes. This is the recommended way of installing Python modules.

[scrosby@spartan-login2 ~]$ virtualenv ~/venvs/venv-3.10.4
created virtual environment CPython3.8.6.final.0-64 in 3721ms
  creator CPython3Posix(dest=/home/scrosby/venvs/venv-3.8.6, clear=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/scrosby/.local/share/virtualenv)
  added seed packages: pip==20.2.3, setuptools==50.3.0, wheel==0.35.1
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

[scrosby@spartan-login2 ~]$ source ~/venvs/venv-3.10.4/bin/activate
(venv-3.10.4) [scrosby@spartan-login2 ~]$ 

Note you only have to install the package once. You don't need to do it every time you want to use the package.

(venv-3.10.4) [scrosby@spartan-login1 ~]$ pip install matplotlib
Collecting matplotlib
  Downloading matplotlib-3.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (11.3 MB)
     |████████████████████████████████| 11.3 MB 29.3 MB/s 

This works well for pure-python packages, but you may encounter errors for those that link to other binary packages. Alternatively, let us know, we can install it for you.

Detailed instructions are available at /apps/examples/Python/2022virtualenv.md on Spartan.