conda


Conda ou miniconda ?

Conda ou miniconda ?

conda est un gestionnaire d’environnements appelé miniconda et un ensemble de paquets utiles pour les applications scientifiques. Nous avons fait le choix d’installer miniconda seul, et de définir plusieurs environnements"types" que vous pourrez utiliser en fonction de votre projet.

Si ces environnements ne vous conviennent pas, nous expliquons ici comment construire votre propre environnement

 

Charger l’environnement

Charger l’environnement
module purge
module load conda/4.9.2
 

Vérifier quels sont les environnements disponibles

Vérifier quels sont les environnements disponibles
conda env list
[manu@olympelogin1 ~]$ conda env list
# conda environments:
#
fidle                    /users/sysadmin/manu/.conda/envs/fidle
gdal                     /users/sysadmin/manu/.conda/envs/gdal
...
base                  *  /usr/local/miniconda/4.9.2
pytorch-1.7              /usr/local/miniconda/4.9.2/envs/pytorch-1.7

Le caractère ’*’ montre quel est votre environnement courant

 

Activer un environnement

Activer un environnement
[manu@olympelogin1 ~]$ conda activate pytorch-1.7
(pytorch-1.7) [manu@olympelogin1 ~]$
 

Vérifier les paquets installés dans l’environnement courant

Vérifier les paquets installés dans l’environnement courant
(pytorch-1.7) [manu@olympelogin1 ~]$ conda list
# packages in environment at /usr/local/miniconda/4.9.2/envs/pytorch-1.7:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                      1_llvm    conda-forge
ca-certificates           2020.12.5            ha878542_0    conda-forge
certifi                   2020.12.5        py39hf3d152e_1    conda-forge
cffi                      1.14.5           py39he32792d_0    conda-forge
cudatoolkit               10.2.89              h8f6ccaa_8    conda-forge
cudnn                     7.6.5.32             h01f27c4_1    conda-forge
...
 

Rechercher un paquet à installer

Rechercher un paquet à installer
(pytorch-1.7) [manu@olympelogin1 ~]$ conda search tensorflow
Loading channels: done
# Name                       Version           Build  Channel             
...
tensorflow                     1.8.0      h01c6a4e_0  pkgs/main           
tensorflow                     1.8.0      h16da8f2_0  pkgs/main           
tensorflow                     1.8.0      h2742514_0  pkgs/main           
...
 

Installer des paquets dans l’environnement courant

Installer des paquets dans l’environnement courant

Ici j’installe une vieille version de numpy :

(mon_environnement) [manu@olympelogin1 ~]$ conda install numpy=1.9.3=py27_nomklhbee5d10_3
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /users/sysadmin/manu/.conda/envs/mon_environnement

  added / updated specs:
    - numpy==1.9.3=py27_nomklhbee5d10_3

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    libopenblas-0.2.20         |       h9ac9557_7         4.0 MB
    numpy-1.9.3                |py27_nomklhbee5d10_3         2.6 MB
    pip-19.3.1                 |           py27_0         1.7 MB
    python-2.7.18              |       h15b4118_1         9.9 MB
    setuptools-44.0.0          |           py27_0         512 KB
    ------------------------------------------------------------
                                           Total:        18.7 MB

The following NEW packages will be INSTALLED:

  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  blas               pkgs/main/linux-64::blas-1.0-openblas
  ca-certificates    pkgs/main/linux-64::ca-certificates-2021.1.19-h06a4308_0
  certifi            pkgs/main/noarch::certifi-2020.6.20-pyhd3eb1b0_3
  libedit            pkgs/main/linux-64::libedit-3.1.20191231-h14c3975_1
  libffi             pkgs/main/linux-64::libffi-3.3-he6710b0_2
  libgcc-ng          pkgs/main/linux-64::libgcc-ng-9.1.0-hdf63c60_0
  libgfortran-ng     pkgs/main/linux-64::libgfortran-ng-7.3.0-hdf63c60_0
  libopenblas        pkgs/main/linux-64::libopenblas-0.2.20-h9ac9557_7
  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-9.1.0-hdf63c60_0
  ncurses            pkgs/main/linux-64::ncurses-6.2-he6710b0_1
  numpy              pkgs/main/linux-64::numpy-1.9.3-py27_nomklhbee5d10_3
  pip                pkgs/main/linux-64::pip-19.3.1-py27_0
  python             pkgs/main/linux-64::python-2.7.18-h15b4118_1
  readline           pkgs/main/linux-64::readline-8.1-h27cfd23_0
  setuptools         pkgs/main/linux-64::setuptools-44.0.0-py27_0
  sqlite             pkgs/main/linux-64::sqlite-3.33.0-h62c20be_0
  tk                 pkgs/main/linux-64::tk-8.6.10-hbc83047_0
  wheel              pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
  zlib               pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3

Proceed ([y]/n)? y

Downloading and Extracting Packages
numpy-1.9.3          | 2.6 MB    | ################################################################################################################################################################################################### | 100%
pip-19.3.1           | 1.7 MB    | ################################################################################################################################################################################################### | 100%
python-2.7.18        | 9.9 MB    | ################################################################################################################################################################################################### | 100%
setuptools-44.0.0    | 512 KB    | ################################################################################################################################################################################################### | 100%
libopenblas-0.2.20   | 4.0 MB    | ################################################################################################################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

On voit qu’une vieille version de python a été installée avec...

 

Installer un paquet avec pip

Installer un paquet avec pip

Certains logiciels s’installent avec pip et pas avec Conda. Il est tout-à-fait possible d’utiliser pip dans un environnement conda, mais nous vous recommandons de commencer par lire cette documentation (en anglais), qui explique les précautions à prendre.

 

Créer un nouvel environnement

Créer un nouvel environnement

...pour installer une autre application, et l’activer :

(pytorch-1.7) [manu@olympelogin1 ~]$ conda create -n mon_environnement --clone base
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /users/sysadmin/manu/.conda/envs/mon_environnement

Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate mon_environnement
#
# To deactivate an active environment, use
#
#     $ conda deactivate
(pytorch-1.7) [manu@olympelogin1 ~]$ conda activate mon_environnement
(mon_environnement) [manu@olympelogin1 ~]$
(mon_environnement) [manu@olympelogin1 ~]$ conda list
# packages in environment at /users/sysadmin/manu/.conda/envs/mon_environnement:
#
# Name                    Version                   Build  Channel

NOTE : Afin que tout se passe bien, et notamment l’utilisation ultérieure de pip dans votre environnement, il est préférable de cloner l’environnement base plutôt que de créer un environnement à partir de rien. D’où le switch --clone base

A ce stade, mon_environnement est une coquille vide : la suite montre comment la remplir

 

Cloner un environnement

Cloner un environnement

Si vous voulez travailler dans un environnement personnalisé qui soit basé sur un environnement existant, vous pouvez commencer par le cloner (c’est-à-dire le copier) :

Ainsi, je vais reprendre mon_environnement mais y installer une version plus récente de numpy. Pour commencer je vais cloner mon_environnement (clonage) et activer le nouvel environnement :

(mon_environnement) [manu@olympelogin1 ~]$ conda create -n mon_nouvel_environnement --clone mon_environnement
Source:      /users/sysadmin/manu/.conda/envs/mon_environnement
Destination: /users/sysadmin/manu/.conda/envs/mon_nouvel_environnement
Packages: 20
Files: 0
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate mon_nouvel_environnement
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Il ne se passe (presque) rien : conda fait des liens durs afin de "copier" l’environnement sans utiliser trop d’espace disque.

Maintenant j’active le nouvel environnement et j’installe numpy1.11.3 :

(mon_environnement) [manu@olympelogin1 ~]$ conda activate mon_nouvel_environnement
(mon_nouvel_environnement) [manu@olympelogin1 ~]$ conda install numpy=1.11.3
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /users/sysadmin/manu/.conda/envs/mon_nouvel_environnement

  added / updated specs:
    - numpy=1.11.3

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    blas-1.0                   |         openblas          46 KB
    numpy-1.11.3               |   py27h2aefc1b_9          10 KB
    numpy-base-1.11.3          |   py27h7cdd4dd_9         2.9 MB
    ------------------------------------------------------------
                                           Total:         2.9 MB

The following NEW packages will be INSTALLED:

  numpy-base         pkgs/main/linux-64::numpy-base-1.11.3-py27h7cdd4dd_9

The following packages will be UPDATED:

  numpy                          1.9.3-py27_nomklhbee5d10_3 --> 1.11.3-py27h2aefc1b_9

The following packages will be DOWNGRADED:

  blas                                                      -->

Proceed ([y]/n)? y

Downloading and Extracting Packages
numpy-base-1.11.3    | 2.9 MB    | ################################################################################################################################################################################################### | 100%
blas-1.0             | 46 KB     | ################################################################################################################################################################################################### | 100%
numpy-1.11.3         | 10 KB     | ################################################################################################################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

J’ai maintenant à ma disposition deux environnements, avec deux versions différentes de numpy : je peux décider quelle version je veux conserver !

 

Faire le ménage dans ses environnements

Faire le ménage dans ses environnements

Si les tests ci-dessus ne sont pas concluants, je n’ai pas abîmé mon ancien environnement : je n’ai plus qu’à supprimer le nouvel environnement, qui n’a pas fait ses preuves :

(mon_nouvel_environnement) [manu@olympelogin1 ~]$ conda deactivate
(mon_environnement) [manu@olympelogin1 ~]$ conda env remove -n mon_nouvel_environnement

Remove all packages in environment /users/sysadmin/manu/.conda/envs/mon_nouvel_environnement:

...Et si les tests sont concluants et que je n’ai plus besoin de mon_environnement, c’est lui que je supprimerai pour économiser l’espace disque.

Faire le ménage dans ses paquets

Faire le ménage dans ses paquets

Toutes ces manipulations vont remplir votre home, en particulier vous vous retrouverez avec un grand nombre de fichiers .tgz qui ne servent plus à rien une fois les paquets installés. C’est ce qu’on appelle le cache. Par prudence, commencez par une commande qui ne fera rien d’autre que de vous dire ce qui sera nettoyé :

conda clean -a —dry-run

Si vous souhaitez garder des tgz (pour pouvoir reproduire votre installation ailleurs par exemple), c’est le moment de les mettre en lieu sûr !
Et quand vous êtes prêts :

conda clean -a

Si certains paquets ont été installés avec la commande pip, vous pouvez utiliser ces commandes pour supprimer les fichiers temporaires mis en cache lors de l'installation :

  • Localiser le répertoire contenant le cache : pip cache dir
  • Purger les fichiers du cache : pip cache purge

Voir aussi

python-tools

Cet article décrit le contenu de l’environnement conda "python-tools", les modules python et leurs version et indique comment l’utiliser

python

Cet article décrit les différentes versions disponibles de l’environnement conda "python"

Jupyter notebook

Comment utiliser Jupyter Notebook avec Olympe