Python

Cette page décrit l'utilisation de Python pour vos besoins utilisateurs, à travers la distribution Anaconda. C'est une distribution Python indépendante de celle du système et intégrant de nombreux modules optionnels nécessaires dans un contexte scientifique. Elle permet aussi de :

  • Bénéficier d'une version à jour, en particulier Python3, indépendamment de la version fournie par le système
  • D'ajouter en tant qu'utilisateur les modules dont on a besoin, indépendamment de ce qui est installé en standard pour tous les utilisateurs, à travers la notion de Conda Environment.

Anaconda s'appuie sur un gestionnaire de packages appelé Conda qui dispose d'une documentation en ligne très complète. Cette page décrit quelques éléments spécifiques à l'installation LAL et les commandes utiles pour initialiser son propre environnement.

Pour utiliser Anaconda, il faut se connecter sur une machine CentOS 7, par exemple lx6.
Cette page décrit l'utilisation de Anaconda pour Python mais Anaconda/Conda peut être utilisé pour gérer de nombreux autres environnements scientifiques (par exemple R). Au LAL, il est aussi utilisé pour gérer l'installation de ROOT6.

Utiliser Anaconda/Python au LAL

Au LAL, 2 versions de Anaconda sont disponibles, correspondant respectivement à Python2 et Python3. Seule la version Python3 est régulièrement maintenue, Le développement de Python2 étant arrêté depuis début 2020.

Avant de pouvoir utiliser Anaconda/Python, il faut activer Anaconda et l'environnement Python avec les commandes suivantes :

# Sélection de la version Anaconda à utiliser
# (mettre 2 à la place de 3 pour utiliser Python2)
# Exécuter conda.sh dans un shell Bash ou Zsh
source /lal/anaconda/3/etc/profile.d/conda.csh
# Activer l'environnement de base Python
conda activate

Si l'environnement de base contient tous les modules dont vous avez besoin, il est possible de l'utiliser directement. Mais si vous souhaitez utiliser d'autres modules ou être sur que votre environnement ne changera pas, même s'il y a des mises à jour, il faut créer un Conda Environment comme indiqué ci-dessous.

Gérer son propre environnement

Pour plus d'information que les commandes données ci-dessous, voir la documentation officielle de Conda.

Pour toutes les commandes indiquées ci-dessous, il est possible d'ajouter l'option --help pour obtenir de l'aide sur la syntaxe précise et les options de la commande.

Définir l'emplacement des environnements

Un des avantages de Conda/Anaconda est de permettre de définir des environnements Python différents suivant les applications qu'on veut exécuter, avec dans chaque environnement des dépendances spécifiques. Cela permet d'éviter les conflits de dépendances entre applications. Il est donc recommandé de créer un environnement par application ou groupes d'applications. Les environnements sont normalement spécifiques à un utilisateur.

L'emplacement par défaut des environnements par défaut est normalement le home directory, ce qui n'est pas toujours souhaitable. En effet un environnement peut consommer un espace disque non négligeable. Il est donc conseillé de le mettre dans un espace de groupe hors du home directory, comme /exp/groupe. Pour vérifier le repertoire courant, utiliser :

conda config --show envs_dirs

Pour changer l'emplacement utilisé par défaut par la commande de création des environnement, utiliser la commande suivante qui ajoutera un répertoire en tête de la liste. Il est important de ne pas supprimer un répertoire qui pourrait contenir des environnements (et s'il est vide il n'y a aucun inconvénient à le laisser!). Le répertoire ajouté doit exister.

conda config --prepend envs_dirs /my/pref/env/dir

Créer un environnement

Pour créer son propre environnement la commande à utiliser est :

# Créer l'environnement (ici 'myenv'). Remplacer conda_modules par une liste de module,
# par exemple python.
conda create -n myenv conda_modules
# Activer l'environnement créé
conda activate myenv

Il est possible d'ajouter l'option --clone à la commande create pour créer un environnement qui duplique un autre environnement existant. Sauf cas particulier, ce n'est pas très conseillé car les 2 environnements deviennent liés alors que le but des environnements est en général de découpler les choses.

Lister les environnements disponibles et leur contenu

On peut voir la liste de tous les modules installés dans l'environnement courant avec :

conda list

Pour avoir la liste de tous les environnements disponibles (activables avec conda activate), il faut utiliser :

conda env list

Mettre à jour l'environnement

Une fois l'environnement créé, il est possible d'ajouter de nouveaux modules avec la commande conda install module : cela installe toutes les dépendances nécessaires. On peut imposer une version particulière du module (cela peut avoir un impact sur d'autres dépendances) avec la syntaxe module=version, par exemple python=3.8.

Les mises à jour de l'environnement de base n'affecteront pas votre environnement. Cela signifie aussi que vous êtes responsables de sa mise à jour ! Elle s'effectue avec la commande conda update qui permet de mettre à jour soit un module particulier en indiquant son nom, soit l'ensemble de l'environnement en indiquant anaconda.

Supprimer un environnement

Pour supprimer un environnement, il faut utiliser la commande conda env remove et indiquer l'environnement à détruire avec l'option -n, par exemple

conda env remove -n mypython

Si l'environnement à détruire est l'environnement actif, il faut d'abord le désactiver (ce qui fait revenir dans l'environnement de base) :

conda deactivate