Install Miniconda Python

Miniconda Python is another Python distribution. You can install a version for either Python 2 or a Python 3. You might find this Miniconda distribution easier to use than scl and virtualenv as described here: Install your own Python.

Download the “Linux 64-bit (bash installer)" from its download page: https://conda.io/en/latest/miniconda.html. The filename will be “Miniconda3-latest-Linux-x86_64.sh”.

Check the MD5 Sums

There is a link on that page for the “Archive and MD5 sums for the installers” which should point to https://repo.anaconda.com/miniconda/. On that page search for the filename that you downloaded and find its MD5 sum. In this case it’s 866ae9dff53ad0874e1d1a60b1ad1ef8. On the cluster check the MD5 sum like this:

$ md5sum Miniconda3-latest-Linux-x86_64.sh 
866ae9dff53ad0874e1d1a60b1ad1ef8   Miniconda3-latest-Linux-x86_64.sh

It matches OK.   If it does not match do not run the installer!   Contact us.

Install Miniconda

Install this into your own home directory:

$ bash Miniconda3-latest-Linux-x86_64.sh 

Welcome to Miniconda3 4.6

In order to continue the installation process, please review the license agreement.  
Please, press ENTER to continue
.....
Miniconda3 will now be installed into this location:
/shared/homes/xxxxxxx/miniconda3
.....
PREFIX=/shared/homes/xxxxxx/miniconda3
installing: python-3.7
installing: ca-certificates-2017.08.26-h1d4fec5_0 ...
installing: conda-env-2.6.0-h36134e3_1 ...
installing: libgcc-ng-7.2.0-h7cc24e2_2 ...
.......

The installer will then ask you:

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

If you answer “yes” then changes will be made to the end of your .bashrc file. I would advise you not to do this. Answer “no” here. (If later you wish this, then just run conda init.) So answer “no”. The install will then finish …

You have chosen to not have conda modify your shell scripts at all.
To activate conda's base environment in your current shell session:
  eval "$(/shared/homes/XXXXXX/miniconda3/bin/conda shell.YOUR_SHELL_NAME hook)" 

To install conda's shell functions for easier access, first activate, then:
  conda init

If you'd prefer that conda's base environment not be activated on startup, 
set the auto_activate_base parameter to false: 

  conda config --set auto_activate_base false

Thank you for installing Miniconda3!
$

Ignore the eval and the conda init above. Miniconda is now installed. We just need to activate it like this:

$ source miniconda3/bin/activate 
(base)$ 

Notice our prompt has changed from $ to (base)$, this means we are in the base of the Conda Python environment.

Update your Base Miniconda

Miniconda does not use the standard “pip” Python packaging manager, it uses it’s own package manager called “conda”. To make sure your Miniconda is at the latest version do a conda update conda from within the base distribution.

(base) $ conda update conda
Collecting package metadata (current_repodata.json): done
Solving environment: done
...
The following packages will be UPDATED:
  cryptography  2.6.1-py37h1ba5d50_0 --> 2.7-py37h1ba5d50_0
  pip                  19.0.3-py37_0 --> 19.1.1-py37_0
  sqlite           3.27.2-h7b6447c_0 --> 3.28.0-h7b6447c_0
  urllib3              1.24.1-py37_0 --> 1.24.2-py37_0

Proceed ([y]/n)? y
....

Activate or Deactivate your Miniconda Environment

We can activate and deactivate our Miniconda at any time like this. I have included the command for showing which python is currently active to make it clear what’s happening.

$ which python
/usr/bin/python     <-- This is the system Python.
$ 
    
$ source miniconda3/bin/activate 
(base) $ 

(base) $ which python
/shared/homes/XXXXXX/miniconda3/bin/python  <-- This is your Python.
(base) $ 

(base) $ conda deactivate
$ 

$ which python
/usr/bin/python     <-- Back to the system Python.
$ 

Creating Miniconda Virtual Environments

This is one of the most useful features of Miniconda – the ability to create several completely independent python environments. Rather than using the “base” Miniconda python we can create a new Python environment specific for what we wish to do. For instance we might have two projects; “Project A” which requires Python 3.6 and a set of Python modules and “Project B” that requires the older Python 2.7 with a different set of python modules.

Let’s create a Python virtual environment for “Project A” which will use Python 3.6. Note we will not use spaces in the directory name, spaces in file and directory names cause problems.

(base) $ conda create --name project_A python=3.6
..... 
environment location: /shared/homes/XXXXXX/miniconda3/envs/project_A
#
# To activate this environment, use
#
#     $ conda activate project_A
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) $ conda activate project_A
(project_A) $ 

You can run conda list to see what modules are already installed. Run conda install numpy to install the Numpy package etc.

(project_A) $ conda deactivate
(base) $ 

Now let’s create Project B which will be a Python 2.7 environment.

(base) $ conda create --name project_B python=2.7
(project_B)

(project_B) conda install imageio
....

(project_A) $ conda deactivate
(base) $ 

Running conda list will show you that we now have different Python packages installed in project_A and project_B.

(base)$ conda list -n project_A
(base)$ conda list -n project_B

You can remove a Miniconda environment with:

$ conda env remove -n project_B

Updating your Miniconda Environments

Here we are in “Project A”. We save the current list of modules (in case we need to revert) and then update them all.

(project_A)$ conda list --export > conda_export_2019.01.10.txt
(project_A)$ conda update --all

You should do this regularly within each of your Miniconda virtual environments.

Useful Miniconda Commands

Obtain help on using conda with conda -h or `conda -h.

$ conda info            Display information about current conda install.
$ conda env list        Lists your Python virtual environments.
$ conda list            Lists installed Python modules.
$ conda list --export   Save package list for future use.
This is custom footer