Miniconda
Note: Although performing a module purge
will remove the miniconda3 module from your module list, it does not clean up the new/modified environment variables. This is due to them not being directly set by the module file, but rather by an addition script that was called.
Currently, you will need to start a new session if you want a clean environment.
Overview
Miniconda is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on, and a small number of other useful packages, including pip, zlib and a few others. It can also be used to start with a minimal set of installed packages, and then install only the required ones (to save space).
Training:
ARCC provides the following workshops on using conda environments:
Using
Use the module name miniconda3
to discover versions available and to load the application.
When using miniconda3 via an interactive session (salloc
) or submitting a script via sbatch
, please make sure to explicitly load the miniconda3
module once you have your interactive session on the compute node, and within you bash script.
If you do not, you’ll see an error of the form: CondaError: Run 'conda init' before ...
Install Packages into a Miniconda Environment in Your Home Directory
The following commands are useful for creating and using environments in your home directory:
| show environments |
| create an environment named NAME in your home related conda location. |
| create an environment named NAME, with specified Python version |
| create an environment named NAME in your current location. |
| activate environment NAME |
| install package PKG into the current environment |
| install package PKG from channel CHANNEL into the current environment |
| show packages in current environment |
| show packages in environment NAME |
| deactivate current environment |
Installing Python Packages
After creating and activating an environment, packages available through Anaconda can be installed into that environment using the conda install
command. For example, NumPy can be installed by:
conda install numpy
There are also packages available through different channels. For example, PyNIO and PyNGL from NCAR are available through the conda-forge
channel, and can be installed by:
conda install -c conda-forge pynio
conda install -c conda-forge pyngl
Searching for Packages in Channels
To search if a package is available in the current channels, e.g. the package demultiplex
:
conda search demultiplex
To search if a package is available from a particular channel (the conda-forge
channel in this example):
If a package isn't available from a conda
channel but is available as a PyPi package (usually installed with pip
), it can still be installed into a conda
environment.
Examples
Example: Installing a conda
Package
Using the above commands, here is an example of creating an environment and installing the NumPy, PyNIO and PyNGL packages into it:
Load Miniconda (and dependecies):
Create and activate the environment:
Install the packages:
Deactivate environment:
It is also possible to interactively search/browse conda
packages on the Anaconda Cloud site.
Example: Installing a PyPi Package
Using the above commands, here is an example of creating an environment and installing the PyPi demultiplex
package into it:
Load Miniconda (and dependencies):
Create and activate the environment:
Install
pip
into this environment:Update
pip
(in theconda
environment):Use
pip
(from theconda
environment) to install thedemultiplex
package:Deactivate environment:
Using Installed Python Packages
There are two ways to use Python packages installed in conda
environments. For example, to use the demultiplex
package installed above:
Activate the
demux
environment, then a Python script with 'import demultiplex
' will find the package, and when done running it, deactivate the environment.At the top of the Python script, use Python from the
demux
environment directly — this method does not require activating and deactivating the environment — the top line of the script would be:
where uname
is replaced with your username, and demux
is replaced by the name of your environment.
Example: Installing a C/C++ Package
Besides Python packages, conda
can be used to install packages for various other languages such as R, C, and C++. For example, the GNU Scientific Library (GSL) is a numerical library of various mathematical functions that can be used in C and C++ programs. It is available as a conda
package and can be installed by:
Load Miniconda (and dependecies):
Create and activate the environment:
Install the packages:
Deactivate environment:
After installing gsl
into a conda
environment as above, it is possible to use it in a C or C++ program by adding the necessary include and/or library paths to the paths that will be searched, e.g.:
add to INCLUDE path:
~/.conda/envs/gsl/include/gsl
add to LIBRARY path:
~/.conda/envs/gsl/lib
Note that the include and library paths will be different for different packages, and can be found by (from home directory) 'cd .conda/envs/NAME
' where NAME
is the name of the environment that the package was installed into, and then looking to see where the different types of files are.
Troubleshooting and Other Notes
Python packages: All Python packages that will be needed in programs using a package will need to be installed into the same environment, as the instance of Python from this environment will be used to run the programs. To install additional packages, activate the environment, install the packages (with
conda
if possible, otherwise withpip
), then deactivate the environment.Installing PyPi packages with pip: If an attempt to install a package gives an error about trying to write to a location to which there isn't permission, this is usually a result of a PATH issue.
It is important to use the instance of
pip
that was installed in theconda
environment, and not one from another location that may be available in the path.The current path can be seen by running '
echo $PATH
'.Issues with incorrect directories being included, or occurring in the wrong order, in a path can usually be resolved by logging out and back in, loading Miniconda, then activating the necessary environment.
Conda environment dependencies:
Within the Conda documentation on Managing environments, specifically the section on Building identical conda environments, it states:
You can use explicit specification files to build an identical conda environment on the same operating system platform, either on the same machine or on a different machine.
An explicit spec file is not usually cross platform, and therefore has a comment at the top such as # platform: osx-64 showing the platform where it was created. This platform is the one where this spec file is known to work. On other platforms, the packages specified might not be available or dependencies might be missing for some of the key packages already in the spec.
Conda does not check architecture or dependencies when installing from a spec file. To ensure that the packages work correctly, make sure that the file was created from a working environment, and use it on the same architecture, operating system, and platform, such as linux-64 or osx-64.
Common Error Messages
Error: /lib64/libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b
This error is typically associated when trying to use git
after performing a module load miniconda3/<version>
. For example:
This is a know system issue as suggested here 1829790 – libk5crypto.so.3: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b and relates to trying to use a newer version of openssl
than installed on the base system.
There are a number of potentially solutions depending on what your use case is:
Use a newer version of
git
than provided by the base system. Perform amodule spider git
to see available versions and load.If you’re using an active conda environment, then you can explicitly install conda into it via
conda install -c anaconda git
.
Error: json.decoder.JSONDecodeError: Expecting value: line
This may occur while trying to install packages, or creating a new environment.
Solution: Try conda clean -i
in your account then re-perform the conda install step.
The clean
command removes unused packages and caches, with the -i
option removing the index cache that might have become corrupted..