Conda is yet another package, dependency and environment management for multiple languages like Python, C/C++, JavaScript, Java, Scala and many more
For example, with Conda the user could create python environment with the exact versions he needs! And it could be used under any Linux distribution or even Windows.
This article is to show how to install the command-line version of the Conda, which is part of the bigger platform Anaconda. The command-line version is distributed with the name Miniconda. In fact, Miniconda is a free installer for Conda, which includes only the basic set to run conda and conda install to install more than 8000 packages from the Anaconda repositories.
The Anaconda repositories could be found here: https://anaconda.org/anaconda/repo
Advantages of Miniconda:
- Minimal installation. 400 Mbytes, not 3G for the Anaconda platform.
- simple command-line interface. Couple of simple commands and their instructions are enough to bring up a complex environment for scientific or development purposes.
- The creating of a specific environment could be automated.
- No strange or not friendly GUI.
- Easy installation under most of the Linux distribution and Windows.
- The whole installation could occur only under a user’s home directory. No files require to be installed by the administrator or under global administrative path.
STEP 1) Download miniconda3 from the official site
The official site https://docs.conda.io/en/latest/miniconda.html offers multiple versions Python 3.7, 3.8 and 3.9 for Linux, MacOS and Windows.
The 64bit python 3.9 is chosen https://repo.anaconda.com/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh It does not matter what is the installed version under the system, on which is going to be installed the miniconda. The base conda environment will have Python 3.9, but environments with older or newer version could be created with no differ.
Download the file https://repo.anaconda.com/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh and make it executable.
myuser@srv ~ $ https://repo.anaconda.com/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh --2022-01-28 14:39:31-- https://repo.anaconda.com/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh Resolving repo.anaconda.com... 104.16.130.3, 104.16.131.3, 2606:4700::6810:8203, ... Connecting to repo.anaconda.com|104.16.130.3|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 66709754 (64M) [application/x-sh] Saving to: ‘Miniconda3-py39_4.10.3-Linux-x86_64.sh’ Miniconda3-py39_4.10.3-Linu 100%[=========================================>] 63.62M 1.82MB/s in 29s 2022-01-28 14:40:00 (2.20 MB/s) - ‘Miniconda3-py39_4.10.3-Linux-x86_64.sh’ saved [66709754/66709754] myuser@srv ~ $ chmod 755 Miniconda3-py39_4.10.3-Linux-x86_64.sh
STEP 2) Install miniconda.
After the file has been made executable it could be executed to start the installation process.
myuser@srv ~ $ ./Miniconda3-py39_4.10.3-Linux-x86_64.sh
Welcome to Miniconda3 py39_4.10.3
In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>
===================================
End User License Agreement - Miniconda
===================================
Copyright 2015-2021, Anaconda, Inc.
All rights reserved under the 3-clause BSD License:
This End User License Agreement (the "Agreement") is a legal agreement between you and Anaconda, Inc. ("Anaconda") and governs your use of Miniconda.
Subject to the terms of this Agreement, Anaconda hereby grants you a non-exclusive, non-transferable license to:
* Install and use the Miniconda.
* Modify and create derivative works of sample source code delivered in Miniconda subject to the Terms of Service for the Repository (as defined hereinafter) available at https://www.anac
onda.com/terms-of-service, and
* Redistribute code files in source (if provided to you by Anaconda as source) and binary forms, with or without modification subject to the requirements set forth below.
.....
.....
Do you accept the license terms? [yes|no]
[no] >>> yes
Miniconda3 will now be installed into this location:
/home/myuser/miniconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/myuser/miniconda3] >>>
PREFIX=/home/myuser/miniconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/myuser/miniconda3
added / updated specs:
- _libgcc_mutex==0.1=main
- _openmp_mutex==4.5=1_gnu
- brotlipy==0.7.0=py39h27cfd23_1003
- ca-certificates==2021.7.5=h06a4308_1
- certifi==2021.5.30=py39h06a4308_0
- cffi==1.14.6=py39h400218f_0
- chardet==4.0.0=py39h06a4308_1003
- conda-package-handling==1.7.3=py39h27cfd23_1
- conda==4.10.3=py39h06a4308_0
- cryptography==3.4.7=py39hd23ed53_0
- idna==2.10=pyhd3eb1b0_0
- ld_impl_linux-64==2.35.1=h7274673_9
- libffi==3.3=he6710b0_2
- libgcc-ng==9.3.0=h5101ec6_17
- libgomp==9.3.0=h5101ec6_17
- libstdcxx-ng==9.3.0=hd4cf53a_17
- ncurses==6.2=he6710b0_1
- openssl==1.1.1k=h27cfd23_0
- pip==21.1.3=py39h06a4308_0
- pycosat==0.6.3=py39h27cfd23_0
- pycparser==2.20=py_2
- pyopenssl==20.0.1=pyhd3eb1b0_1
- pysocks==1.7.1=py39h06a4308_0
- python==3.9.5=h12debd9_4
- readline==8.1=h27cfd23_0
- requests==2.25.1=pyhd3eb1b0_0
- ruamel_yaml==0.15.100=py39h27cfd23_0
- setuptools==52.0.0=py39h06a4308_0
- six==1.16.0=pyhd3eb1b0_0
- sqlite==3.36.0=hc218d9a_0
- tk==8.6.10=hbc83047_0
- tqdm==4.61.2=pyhd3eb1b0_1
- tzdata==2021a=h52ac0ba_0
- urllib3==1.26.6=pyhd3eb1b0_1
- wheel==0.36.2=pyhd3eb1b0_0
- xz==5.2.5=h7b6447c_0
- yaml==0.2.5=h7b6447c_0
- zlib==1.2.11=h7b6447c_3
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
brotlipy pkgs/main/linux-64::brotlipy-0.7.0-py39h27cfd23_1003
ca-certificates pkgs/main/linux-64::ca-certificates-2021.7.5-h06a4308_1
certifi pkgs/main/linux-64::certifi-2021.5.30-py39h06a4308_0
cffi pkgs/main/linux-64::cffi-1.14.6-py39h400218f_0
chardet pkgs/main/linux-64::chardet-4.0.0-py39h06a4308_1003
conda pkgs/main/linux-64::conda-4.10.3-py39h06a4308_0
conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.7.3-py39h27cfd23_1
cryptography pkgs/main/linux-64::cryptography-3.4.7-py39hd23ed53_0
idna pkgs/main/noarch::idna-2.10-pyhd3eb1b0_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9
libffi pkgs/main/linux-64::libffi-3.3-he6710b0_2
libgcc-ng pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17
libgomp pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17
ncurses pkgs/main/linux-64::ncurses-6.2-he6710b0_1
openssl pkgs/main/linux-64::openssl-1.1.1k-h27cfd23_0
pip pkgs/main/linux-64::pip-21.1.3-py39h06a4308_0
pycosat pkgs/main/linux-64::pycosat-0.6.3-py39h27cfd23_0
pycparser pkgs/main/noarch::pycparser-2.20-py_2
pyopenssl pkgs/main/noarch::pyopenssl-20.0.1-pyhd3eb1b0_1
pysocks pkgs/main/linux-64::pysocks-1.7.1-py39h06a4308_0
python pkgs/main/linux-64::python-3.9.5-h12debd9_4
readline pkgs/main/linux-64::readline-8.1-h27cfd23_0
requests pkgs/main/noarch::requests-2.25.1-pyhd3eb1b0_0
ruamel_yaml pkgs/main/linux-64::ruamel_yaml-0.15.100-py39h27cfd23_0
setuptools pkgs/main/linux-64::setuptools-52.0.0-py39h06a4308_0
six pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
sqlite pkgs/main/linux-64::sqlite-3.36.0-hc218d9a_0
tk pkgs/main/linux-64::tk-8.6.10-hbc83047_0
tqdm pkgs/main/noarch::tqdm-4.61.2-pyhd3eb1b0_1
tzdata pkgs/main/noarch::tzdata-2021a-h52ac0ba_0
urllib3 pkgs/main/noarch::urllib3-1.26.6-pyhd3eb1b0_1
wheel pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
xz pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
yaml pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
zlib pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
Preparing transaction: done
Executing transaction: done
installation finished.
Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]
[no] >>> yes
no change /home/myuser/miniconda3/condabin/conda
no change /home/myuser/miniconda3/bin/conda
no change /home/myuser/miniconda3/bin/conda-env
no change /home/myuser/miniconda3/bin/activate
no change /home/myuser/miniconda3/bin/deactivate
no change /home/myuser/miniconda3/etc/profile.d/conda.sh
no change /home/myuser/miniconda3/etc/fish/conf.d/conda.fish
no change /home/myuser/miniconda3/shell/condabin/Conda.psm1
no change /home/myuser/miniconda3/shell/condabin/conda-hook.ps1
no change /home/myuser/miniconda3/lib/python3.9/site-packages/xontrib/conda.xsh
no change /home/myuser/miniconda3/etc/profile.d/conda.csh
modified /home/myuser/.bashrc
==> For changes to take effect, close and re-open your current shell. <==
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!
myuser@srv ~ $
The End User License Agreement – Miniconda should be accepted and then the installation scripts asks for the installation path. The default installation path is “USER_HOME_DIR/miniconda3/“, i.e. /home/myuser/miniconda3.
Now, Miniconda3 is installed, but the user must log out and log in to take effect of the bash environments installed by the Miniconda3 installation process.
The last couple of lines are important because they state the user will activate the base conda environment on every login by default! If the user does not want any conda environment to be activated by default, just execute (after the first log out/in):
conda config --set auto_activate_base false
The python commands output version 3.9, which is the default base conda python environment, but not the one installed by the Linux distribution 3.8.
myuser@local ~ $ ssh myuser@srv (myuser@srv) Password: (base) myuser@recommendation ~ $ python -V Python 3.9.5
The conda commands available in this installation.
(base) myuser@srv ~ $ conda
usage: conda [-h] [-V] command ...
conda is a tool for managing and deploying applications, environments and packages.
Options:
positional arguments:
command
clean Remove unused packages and caches.
compare Compare packages between conda environments.
config Modify configuration values in .condarc. This is modeled after the git config command. Writes to the user .condarc file (/home/myuser/.condarc) by default.
create Create a new conda environment from a list of specified packages.
help Displays a list of available conda commands and their help strings.
info Display information about current conda install.
init Initialize conda for shell interaction. [Experimental]
install Installs a list of packages into a specified conda environment.
list List linked packages in a conda environment.
package Low-level conda package utility. (EXPERIMENTAL)
remove Remove a list of packages from a specified conda environment.
uninstall Alias for conda remove.
run Run an executable in a conda environment. [Experimental]
search Search for packages and display associated information. The input is a MatchSpec, a query language for conda packages. See examples below.
update Updates conda packages to the latest compatible version.
upgrade Alias for conda update.
optional arguments:
-h, --help Show this help message and exit.
-V, --version Show the conda version number and exit.
conda commands available from other packages:
env
(base) myuser@srv ~ $
STEP 3) Create and activate conda environment.
After the conda successful installation first, create the environment and then activate it. The older python 3.7 is selected to show how to use two different python environment in the same machine and user:
(base) myuser@recommendation ~ $ conda create --name mypython37 python=3.7
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/myuser/miniconda3/envs/mypython37
added / updated specs:
- python=3.7
The following packages will be downloaded:
package | build
---------------------------|-----------------
pip-21.2.2 | py37h06a4308_0 1.8 MB
------------------------------------------------------------
Total: 1.8 MB
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
ca-certificates pkgs/main/linux-64::ca-certificates-2021.10.26-h06a4308_2
certifi pkgs/main/linux-64::certifi-2021.10.8-py37h06a4308_2
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9
libffi pkgs/main/linux-64::libffi-3.3-he6710b0_2
libgcc-ng pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17
libgomp pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17
ncurses pkgs/main/linux-64::ncurses-6.3-h7f8727e_2
openssl pkgs/main/linux-64::openssl-1.1.1m-h7f8727e_0
pip pkgs/main/linux-64::pip-21.2.2-py37h06a4308_0
python pkgs/main/linux-64::python-3.7.11-h12debd9_0
readline pkgs/main/linux-64::readline-8.1.2-h7f8727e_1
setuptools pkgs/main/linux-64::setuptools-58.0.4-py37h06a4308_0
sqlite pkgs/main/linux-64::sqlite-3.37.0-hc218d9a_0
tk pkgs/main/linux-64::tk-8.6.11-h1ccaba5_0
wheel pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
xz pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
zlib pkgs/main/linux-64::zlib-1.2.11-h7f8727e_4
Proceed ([y]/n)? y
Downloading and Extracting Packages
pip-21.2.2 | 1.8 MB | ################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate mypython37
#
# To deactivate an active environment, use
#
# $ conda deactivate
(base) myuser@recommendation ~ $ python -V
Python 3.9.5
(base) myuser@recommendation ~ $ conda activate mypython37
(mypython37) myuser@recommendation ~ $ python -V
Python 3.7.11
(mypython37) myuser@recommendation ~ $
The user must confirm the packages installed with the new environment. Activating the new environment is straightforward and after that, all paths and environment variables are tuned to use the new Python version (3.7) in this case.