.. include:: special.rst

Anaconda
++++++++

Quelques mots sur Anaconda
==========================

Pour ce TP, nous allons travailler avec **Anaconda** , distribution scientifique libre et open source de Python, disponible pour les principaux systèmes d'exploitation, Windows, Linux et MacOS.

Anaconda utilise l'outil **conda** pour la gestion des paquets logiciels (librairies), la gestion des dépendances entre les paquets et la mise en place d'environnements de développements multiples séparés. Il existe aussi un autre gestionnaire de paquet, **pip**.

Pour la mise en place d'un environnement python spécifique pour ce TP Deep Learning, nous avons besoin de réaliser quelques lignes de commandes sur le terminal Anaconda3, "Powershell Prompt (Anaconda3)", disponible sur le menu windows.

Avant toute chose, si Anaconda est déjà installé sur votre machine locale, il est préférable de mettre à jour conda.

Sur les postes de l'ESGT, nous ne pouvons le faire (permission administrateur requise).

En revanche sur votre machine personnelle, cette mise à jour s'effectue via la commande ci-dessous.

.. code :: python

	conda update --yes --name base --channel defaults conda

Dans ce document toutes les comandes avec des arguments sont écrites avec un syntaxe explicite, précédés des deux signes "--" consécutifs.

Il est possible d'utiliser une syntaxe implicite, plus concise, avec un seul signe "-" suivi uniquement de la première lettre de l'argument.

Par exemple, la commande de mise à jour conda, écrite explicitement ci-dessus, peut s'écrire implicitement de la manière suivante :

.. code :: python

	conda update -y -n base -c defaults conda

Activation d'un environnement déjà installé
===========================================

La création et l'installation d'un environnement python avec toutes les bibliothèques choisie s'effectue dans un répertoire. Pour s'affranchir de cette installation ( coûteuse en temps et surtout sur le trafic réseau de l'ESGT), il est possible de récupérer ce répertoire sur une machine, ayant le même système d'exploitation, où cette installation a déjà été réalisé. Ensuite, il suffit de pointer vers l'emplacement de ce répertoire dans votre arborescence pour l'activer via conda.

Ainsi, sur une machine de la salle 107, notre environnement de travail pour ce TP, nommé ``deepLearning``, a été installé dans un réperoitres nommé ``envs`` ( l'arboresence est : ``envs/deepLearning``). Ce répertoire compressé , ``envs.zip`` est disponible sur Atlas. 

Après l'avoir copié sur le réseau à l'emplacement : ``\\atlas2\Cours\IG4\Photogrammétrie_TNP\DeepLearning\`` , puis collé sur le Disque local ``D:`` de votre machine, vous pourrez le décompresser.

Si cette arborescence est bien respectée nous allons pouvoir activer cet environnement avec la commande :

.. code :: python
	
	conda activate D:/DeepLearning/envs/deepLearning

Avec cette méthode, il est nécessaire d'installer le kernel ipython, ce qui s'effectue de la manière suivante :

.. code :: python

	ipython kernel install --user --name-deepLearning

Toujours dans voutre terminal "Powershell Prompt (Anaconda3)" , vous pouvez naviguer dans l'arborescence de votre système avec la commande :code:`cd` ( pour :red:`c` hange :red:`d` irectory). Ainsi pour se placer dans votre répertoire de travail ``D:/DeepLearning`` , vous pouvez saisir :

.. code :: python

	cd D:/DeepLearning

Vous pouvez également lister le contenu de votre arborescence avec la commande ``ls`` (:red:`l` i :red:`s` t)

.. code ::python

	ls

Aujourd'hui nous allons travailler avec l'application web open-source **jupyter notebook** qui peut se lancer tout simplement avec la commande : 

.. code :: python

	jupyter notebook

Il vous faudra bien prendre soin dans votre jupyter notebook de bien sélectionner le bon kernet ``noyau > Changer de noyau > deep Learning``

Installation d'un environnement à partir d'un fichier YAML
==========================================================

À partir du fichier ``deepLearning_env.yml``, nous allons créer un environnement python, nommé deepLearning et installer Python avec toutes les librairies nécessaires pour ce TP. La volumétrie de cet environnement étant de 3.8 Go, il est nécessaire de s'assurer au préalable l'espace disponible sur le Disque local (C:).

Si l'espace sur le Disque local (C:) est suffisant vous pouvez lancer la commande suivante

.. code :: python

	conda env create --name deepLearning --file deepLearning_env.yml

Activez l'environnement deepLearning ainsi créé avec :

.. code :: python

	conda activate deepLearning

Sinon, si l'espace sur le Disque local (C:) n'est pas suffisant , pas de panique , il est possible de préciser le répertoire d'installation notament sur le Disque local (D:).

.. code :: python

	conda env create --prefix /envs/deepLearning --file env.yml

Activez l'environnement deepLearning ainsi créé avec la commande suivante : (il est possible de faire un copié collé avec la souris en séléctionnant avec un simple clic gauche le texte voulue suivi d'un double clic droit)

.. code :: python

	conda activate D:/DeepLearning/envs/deepLearning

Quelques Commandes conda utiles
===============================

Vous pouvez lister l'ensemble des environnement installés comme ceci:

.. code :: python

	conda env list

ou alors comme cela :

.. code :: python

	conda info --envs

Lister l'ensemble des librairies de votre environnement deepLearning ainsi installées :

.. code :: python 

	conda list --name deepLearning

Pour installer un package ( par ex. package_name):

.. code :: python 

	conda install --yes package_name

ou encore plus précisement avec la version souhaité (num_version) :

.. code :: python

	conda install --yes package_name=num_version

ou bien avec l'installateur pip (veillez à bien doubler l'égalité pour le numéro de version) :

.. code :: python
		
	pip install package_name==num_version

Pour désactiver son environnement :

.. code :: python

	conda deactivate

Pour supprimer un environnement (env_name)

.. code :: python

	conde env remove --name env-name

et si celui-ci a été créé avec l'option prefix :

.. code :: python

	conda env remove --prefix /chemin_vers_le_dossier_d_installation

Pour garantir la reproductibilité de vos codes pythons dans votre environnement Python, une excellente pratique est d'exporter son environnement ``my_env_name`` dans un fichier YAML :

.. code :: python

	conda env export > my_env_name.yml

Il existe de nombreuses options de commandes, d'options de configuration possibles. Un rapide aperçu possible avec l'aide conda :

.. code :: python

	conda --help

Pour plus d'information vous pourrez prendre le temps de consulter `le site officiel de conda <https://docs.conda.io/projects/conda/en/latest/>`_