Comment nettoyer les environnements virtuels

PythonBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez les pratiques essentielles pour gérer les environnements virtuels Python. Nous aborderons la création d'un environnement isolé pour un projet, l'installation de dépendances spécifiques, la suppression de paquets inutiles et, finalement, la suppression de l'environnement pour libérer de l'espace disque. Ces compétences sont fondamentales pour maintenir un flux de travail de développement propre et organisé.

Création et Activation d'un Environnement Virtuel

Tout d'abord, créons un environnement isolé pour un projet d'exemple. L'utilisation d'un environnement virtuel garantit que les paquets de ce projet n'entrent pas en conflit avec les paquets d'autres projets ou avec l'installation Python globale du système. Nous utiliserons le module venv, qui est l'outil standard inclus avec Python.

Le script de configuration a déjà créé un répertoire de projet pour nous à l'adresse /home/labex/project/my_web_app. Naviguons-y.

cd my_web_app

Maintenant, créons un environnement virtuel nommé venv à l'intérieur de ce répertoire. Il est courant de nommer le répertoire de l'environnement venv.

python3 -m venv venv

Cette commande crée un répertoire venv contenant une nouvelle installation Python. Vous pouvez en voir le contenu en exécutant :

ls -F venv/

Vous devriez voir des sous-répertoires tels que bin/, include/, lib/, et un fichier de configuration.

bin/  include/  lib/  lib64@  pyvenv.cfg

Pour commencer à utiliser cet environnement, vous devez l'"activer".

source venv/bin/activate

Après avoir exécuté cette commande, vous remarquerez que votre invite de commande change pour inclure (venv), indiquant que l'environnement virtuel est actif. Toutes les commandes Python ou pip que vous exécuterez maintenant utiliseront les exécutables et les paquets de cet environnement.

Vous pouvez le vérifier en consultant le chemin de l'exécutable Python :

which python

La sortie pointera vers le binaire Python à l'intérieur de votre répertoire venv.

/home/labex/project/my_web_app/venv/bin/python

Installation et Isolation des Dépendances

Avec l'environnement virtuel actif, nous pouvons maintenant installer les dépendances du projet. Un fichier requirements.txt a été créé pour vous, qui liste les paquets nécessaires.

Installez les paquets en utilisant pip :

pip install -r requirements.txt

Pip téléchargera et installera flask et requests ainsi que leurs dépendances dans le venv.

Pour voir les paquets installés spécifiquement dans cet environnement, utilisez pip list :

pip list

Vous verrez flask, requests et d'autres paquets qui viennent d'être installés.

Package            Version
------------------ --------
certifi            ...
charset-normalizer ...
click              ...
Flask              2.2.2
idna               ...
itsdangerous       ...
Jinja2             ...
MarkupSafe         ...
pip                ...
requests           2.28.1
setuptools         ...
urllib3            ...
Werkzeug           ...

Maintenant, voyons la puissance de l'isolation. Désactivez l'environnement pour revenir au contexte global de votre système.

deactivate

Le préfixe (venv) dans votre invite disparaîtra. Exécutez à nouveau pip list.

pip list

Vous remarquerez que flask et requests ne sont plus dans la liste, car ils ont été installés uniquement à l'intérieur de l'environnement virtuel, gardant ainsi votre environnement Python global propre.

Suppression des Paquets Inutilisés

Au fur et à mesure qu'un projet évolue, certaines dépendances peuvent devenir obsolètes. Il est de bonne pratique de les supprimer pour maintenir l'environnement léger et pour mettre à jour votre fichier requirements.txt.

Tout d'abord, réactivez l'environnement virtuel pour gérer ses paquets.

source venv/bin/activate

Supposons que notre projet n'ait plus besoin du paquet requests. Nous pouvons le désinstaller en utilisant pip. L'option -y confirme automatiquement la désinstallation.

pip uninstall -y requests

Vérifiez que le paquet a été supprimé en listant à nouveau les paquets installés.

pip list

Vous verrez que requests et ses dépendances (comme urllib3, certifi, etc., s'ils ne sont plus nécessaires par aucun autre paquet) ont disparu.

Après avoir supprimé un paquet, vous devriez mettre à jour votre fichier requirements.txt pour refléter l'état actuel de l'environnement. Vous pouvez le faire en "gelant" la liste actuelle des paquets dans le fichier.

pip freeze > requirements.txt

Vous pouvez afficher le fichier mis à jour pour confirmer le changement :

cat requirements.txt

Le fichier ne listera désormais que flask et ses dépendances.

click==...
Flask==2.2.2
itsdangerous==...
Jinja2==...
MarkupSafe==...
Werkzeug==...

Enfin, désactivons l'environnement pour le moment.

deactivate

Suppression de l'Environnement Virtuel Entier

Lorsqu'un projet est terminé, ou si vous souhaitez recommencer avec un environnement vierge, la méthode de nettoyage la plus simple consiste à supprimer l'intégralité du répertoire de l'environnement virtuel.

Tout d'abord, assurez-vous de ne pas être à l'intérieur du répertoire my_web_app, car il n'est généralement pas conseillé de supprimer un répertoire dans lequel vous vous trouvez actuellement. Déplaçons-nous dans le répertoire parent.

cd /home/labex/project

Avant de le supprimer, vous pouvez vérifier l'espace disque utilisé par l'environnement virtuel avec la commande du (disk usage).

du -sh my_web_app/venv

La sortie affichera la taille totale du répertoire.

30M     my_web_app/venv

Maintenant, supprimez l'intégralité du répertoire venv. La commande rm -rf supprime récursivement et de force le répertoire et tout son contenu. Soyez prudent avec cette commande.

rm -rf my_web_app/venv

Vérifiez que le répertoire a disparu en listant le contenu de my_web_app.

ls my_web_app

Vous verrez que seul le fichier requirements.txt reste. L'environnement virtuel a été complètement nettoyé.

requirements.txt

Résumé

Dans ce laboratoire, vous avez appris le cycle de vie complet de la gestion d'un environnement virtuel Python. Vous avez pratiqué la création d'un environnement avec venv, son activation, l'installation de dépendances à partir d'un fichier requirements.txt, l'observation de l'isolation des paquets, la suppression des paquets inutiles, et enfin, le nettoyage en supprimant l'intégralité du répertoire de l'environnement. Ce sont des compétences cruciales pour tout développeur Python afin de maintenir des configurations de projet propres, reproductibles et sans conflit.