Aller au contenu

Se simplifier les environnements virtuels Python

Vous avez déjà travaillé avec Python, et vous connaissez l'importance des environnements virtuels, mais aussi à quel point c'est le boxon (que ce soit du côté de virtualenv/venv ou de conda). Si comme moi vous jonglez entre les environnements virtuels, cette astuce va vous plaire !

L'outil virtualenvwrapper permet de gérer les environnements virtuels en quelques commandes faciles à retenir.

Démonstration

Créer un nouvel environnement

C'est comme mkdir mais avec virtualenv :

mkvirtualenv env_name

Et voilà ! Un nouvel environnement virtuel a été créé directement dans ~/.virtualenvs (ce chemin peut se configurer). Ainsi ils sont bien rangés dans le même dossier, on peut les trier facilement et supprimer ceux dont on n'a plus besoin sans risquer de les oublier dans un répertoire projet oublié. De même, aucun risque de les pousser dans un dépôt git par erreur.

Il existe plusieurs options que j'utilise rarement, sauf peut-être l'option -r qui permet de donner un fichier requirement.txt pour installer directement des paquets dans le nouvel environnement.

Activer un environnement

Pour activer un environnement existant, pas besoin d'aller chercher le script activate dans le répertoire de l'environnement :

workon env_name

Et voilà. Et si votre environnement a le même nom que le répertoire dans lequel vous vous trouvez, vous pouvez simplement faire workon ., mais je n'utilise jamais cette possibilité. L'auto-complétion fonctionne et permet de lister facilement tous les environnements disponibles (il existe aussi la commande lsvirtualenv).

Pour désactiver un environnement, il suffit de faire deactivate comme d'habitude. Mais il n'est pas nécessaire de désactiver l'environnement courant pour passer à un autre environnement avec workon.

Supprimer un environnement

Vous avez fini de travailler sur ce projet, et vous n'avez plus besoin de cet environnement ? Pas la peine d'aller supprimer le répertoire dans ~/.virtualenvs, il y a plus simple, comme rmdir mais avec virtualenv :

rmvirtualenv env_name

Et voilà, espace libéré :)

Environnements éphémères

Il est possible de créer un environnement qui sera supprimé automatiquement une fois désactivé, avec :

mktmpenv

Un nom aléatoire lui est attribué, de toute façon ce n'est pas important. Une fois vos tests terminés, pas la peine de s'embêter à le supprimer, il a déjà disparu :)

D'autres fonctionnalités existent, mais je ne les ai jamais utilisées (probablement à tort), je vous laisse les découvrir par vous-même.

Installation et configuration

L'installation de cet outil n'est pas compliquée, mais un peu fastidieuse, alors je résume les principales étapes ici :

  1. Installer virtualenvwrapper avec la commande pip install virtualenvwrapper. Utiliser sudo si nécessaire, il faut l'installer dans le même site-packages que virtualenv. Ne pas faire cette commande si un environnement virtuel est déjà activé, vous risquez d'avoir des surprises.
  2. Ajouter la variable d'environnement WORKON_HOME dans votre .bashrc, par exemple export WORKON_HOME = ~/.virtualenvs (je vous avais dit qu'on peut le configurer).
  3. Sourcer le fichier virtualenvwrapper.sh dans votre .bashrc. Il existe une version "lazy" de ce script d’initialisation, pour un démarrage plus rapide de votre shell, mais du coup l'auto-complétion n'est pas activée tant que vous n'avez pas utilisé virtualenvwrapper, or la première utilisation est généralement workon qui tire grand avantage de l'auto-complétion, donc je n'utilise pas la version "lazy". De toute façon c'est très rapide.

C'est installé, vous pouvez en profiter !