Software: Python (Python2 and Python3)
Python is a popular interpreted programming language. Talapas has a large number of Python instances installed, but choosing the best one for your need can be a bit daunting. Here is some guidance.
Python 2 vs Python 3
Although Python3 was derived from Python2, it’s best to think of them as two distinct and incompatible languages. These days, Python2 is deprecated, and it’s best not to use it for new work unless you really need to (perhaps because a module you need is not available for Python3).
In any case, you will want to choose the correct one for your need, as they are not interchangeable at all.
As a detail, always use the commands ‘python3’ and ‘pip3’ when using Python3, and ‘python2’ and ‘pip2’ when using Python2. Historically, there were commands ‘python’ and ‘pip’ that more or less mean “the version of Python I have installed or that I intend”. But these days, they are ambiguous and deprecated.
There Can Be Only One
In any given shell, you should choose only one of the below alternatives. Trying to load two in the same shell can lead to obscure crashes and other bugs. You can always unload everything with
module purge
but you might be better off just starting a new shell.
Versions within Versions
Unfortunately, each Python installation typically has a significant number of Python packages installed within it (typically from PyPI or an Anaconda repo). Although we would prefer to create a Python install with all versions set and never modify it again, for reproducibility, this would in practice lead to an explosion of versions. (And as you can see, we have many already.)
Instead, we occasionally update a minimal set of installed packages upon user request, if it seems that this can be done without disrupting other users. With Miniconda (see below), we often just create a new environment to avoid such issues.
Environment Modules
If you just want quick access to a somewhat generic Python install, you can get one with one of these commands
module load python3
or
module load python2
You can also look for versions newer than the default with commands like
and so on.
Note that each version has a distinct set of “add-on” modules that have been installed via ‘pip3’ (or ‘pip2’). We can add modules by request, but often it might be easier to find a version that already has them.
Miniconda
This is our “go to” solution for most new Python installs these days.
We have a ‘miniconda’ module, which contains within it a large number of environments, almost all of which have a ‘python’ installed. Some of these are the instances that sit behind our Open OnDemand Jupyter instance, so you might be using one already without realizing it.
The most used one currently can be loaded with
which is equivalent to
The name is a bit of an artifact, but refers to the fact that TensorFlow version 1 is included. It also has a large number of other data packages like ‘pandas’, ‘numpy’, ‘scipy’, etc.
A similar module is
which is equivalent to
This is one recommended alternative, if you’re not sure how to start.
It’s quite similar, except that it has TensorFlow version 2. (Note that version 1 is largely deprecated upstream at this point.)
The above choices are stable, but also a bit dated, having been created in mid-2020 or so.
If you’d like to use a similar but quite up-to-date environment, you can do this
This is the module that currently the new Open OnDemand Jupyter instance uses. (Look for the one with the similar date.) This is still in testing and might change a bit, but it’s pretty stable.
An Environment of One’s Own
When we get requests to install combinations of packages that might disrupt other users, we often just create a custom conda environment. All of these are visible to all users (see ‘conda env list’), but their contents might be obscure. In any case, if you have a particular set of packages and versions that you need, we can often provide a custom environment for you (which will also be available to other Talapas users). Or, you are welcome to create your own conda env, here’s the steps to creating personalized conda environments.
Out With the Old
There are a number of other possibilities available, but you probably don’t want to use them, unless perhaps your instructor has recommended them.
RHEL Distribution
If you have no modules loaded, you’ll see ‘python3’ and ‘python2’ from the underlying RedHat distribution. These typically live in ‘/usr/bin/python3' and so on. If you need an exceedingly generic Python, these might be fine. But, we do not recommend them, nor install additional packages. These get updated as we update RHEL.
Anaconda Modules
There are environment modules ‘anaconda2’ and ‘anaconda3’. These were from an early attempt to get Anaconda working on Talapas. You can still use them, but they are not recommended, and we no longer update them. These are superseded by the ‘miniconda’ module.
EasyBuild
There are some versions of Python available via the ‘easybuild’ module. Unless you are in a class or lab that recommends them, you should not use them.
Similarly, there is a ‘racs-eb’ module. Same drill--avoid unless told otherwise.
Spack
Spack (available via ‘spack-rhel8’) is great, but we generally do not support Python this way. You can try them, but avoid unless told otherwise. We usually don’t add modules except to support software that requires it.
Singularity
Some Singularity images have Python inside. If this works for you, it’s great. If you don’t understand this option, it’s likely not for you.
Go Your Own Way
You can install your own Python: modules or entire instance. This might be good in that it’s entirely under your control. But, support from RACS will be more limited.
Just Modules
In principle, for any of the above solutions, you could layer on code of your own by modifying ‘PYTHONPATH’, or perhaps by using the “per-user” flags for ‘pip’ or ‘conda install’. Some users make this work, but there are dragons here, especially with the latter options. It’s easy to create a combination that fails obscurely. If you’re a relatively novice user, you might do better to ask us for what you want.
Entire Instance
In this case, you’d install Python from scratch, manage it, install your own packages, etc. You might do this from source, or perhaps you’d install your own Anaconda instance. If you’re up to it, this might be a great idea. But, mixing and matching with the above Talapas-provided solutions likely won’t end well. Don’t cross the streams.