Aller au contenu

Environnements virtuels Python, le paradis

cover

Dans cet article, j'expliquerai pourquoi les environnements virtuels Python sont si intéressants lorsqu'on sait les utiliser correctement. Je vous montrerai également comment les utiliser correctement.

De quoi s'agit-il ?

Les environnements virtuels Python sont un moyen d'isoler votre environnement Python de l'environnement Python du système. C'est utile lorsque vous travaillez sur plusieurs projets qui nécessitent différentes versions de Python ou différentes versions du même paquetage.

J'ai souvent entendu dire que les gens avaient peur d'utiliser les environnements virtuels Python parce qu'ils pensaient que c'était compliqué et inutile. Mais en même temps, il y a plus de centaines de paquets Python qui tentent de résoudre le même problème : pyenv, virtualenv, pipenv, conda, poetry, pew, et bien d'autres.

Un peu d'histoire

Revenons aux bases. Il existe un module intégré pour cela : venv ! Qui l'aurait cru ? Il a été introduit pour la première fois dans Python 3.3 avec le PEP 405 - Python Virtual Environments.

Ce PEP propose d'ajouter à Python un mécanisme pour des "environnements virtuels" légers avec leurs propres répertoires de site, éventuellement isolés des répertoires de site du système. Chaque environnement virtuel possède son propre binaire Python (ce qui permet de créer des environnements avec différentes versions de Python) et peut avoir son propre ensemble indépendant de paquets Python installés dans ses répertoires de site, mais partage la bibliothèque standard avec le Python de base installé.

Qu'en est-il de tous ces gens qui tentent de résoudre le même problème ? Eh bien, ils essaient de faciliter l'utilisation et la gestion. Mais au final, ils fournissent tous la même chose : un moyen d'isoler votre environnement Python.

Comment les utiliser correctement ?

Il suffit de connaître 3 commandes pour utiliser les environnements virtuels Python de la bonne manière.

Créer un nouvel environnement virtuel

python -m venv myenv

Cette commande va créer un nouveau répertoire appelé myenv qui contient un environnement Python. Vous pouvez remplacer myenv par n'importe quel nom. Le nom le plus courant est venv de .venv. (N'oubliez pas de l'ajouter à votre fichier .gitignore si vous utilisez git).

Activer l'environnement virtuel

source myenv/bin/activate

Cette commande activera l'environnement virtuel. Vous pouvez constater que l'invite a changé. Elle contient désormais le nom de l'environnement virtuel en début de ligne.

(myenv) user@host:~$

Vous pouvez vérifier les binaires Python utilisés par l'environnement virtuel à l'aide de la commande suivante.

which python

Désactiver l'environnement virtuel

deactivate

Cette commande désactive l'environnement virtuel. Vous êtes maintenant de retour dans l'environnement Python du système.

Et maintenant ?

Maintenant que vous savez comment utiliser les environnements virtuels Python, vous pouvez les utiliser dans vos projets.

Dans ma routine, lorsque je démarre un nouveau projet ou que je travaille sur un projet existant, la première chose que je fais est de créer un nouvel environnement virtuel. Ensuite, je l'active et j'installe les paquets nécessaires.

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Cela me permet de travailler sur plusieurs projets qui nécessitent différentes versions de Python ou différentes versions du même paquetage sans aucun conflit. Sans cette technique, je devrais faire face à de nombreux conflits et je devrais désinstaller et réinstaller les paquets en permanence.

Conclusion

Les environnements virtuels Python sont un excellent moyen d'isoler votre environnement Python de l'environnement Python du système. Ils sont faciles à utiliser et très utiles lorsque vous travaillez sur plusieurs projets qui nécessitent différentes versions de Python ou différentes versions d'un même paquetage. Vous devriez les utiliser dans vos projets. Vous gagnerez beaucoup de temps et vous vous épargnerez bien des maux de tête.

N'oubliez pas que Python fournit déjà un module intégré pour créer des environnements virtuels. Vous n'avez pas besoin d'utiliser un paquetage tiers pour le faire. Faites confiance à Python, pas à un paquet que vous avez trouvé au hasard sur Internet