2  L’environnement de travail

Bien que vous puissiez écrire un script Python dans un fichier n’importe où dans votre système de fichiers, travailler de manière plus robuste nécessite de bien préparer son environnement de travail.

2.1 Isoler son environnement de travail

Un projet Python, c’est un interpréteur (sa version) et un ensemble de dépendances. Plusieurs interpréteurs peuvent cohabiter sur un même système. Les dépendances vont être spécifiques à une version d’interpréteur (installer pytest pour Python 3.13 ne le rends pas disponible pour 3.14). Chaque interpréteur a donc un environnement d’exécution. Si vous avez deux projets Python utilisant la même version d’interpréteur, elles utiliseront aussi le même environnement avec les mêmes dépendances.

Pour isoler les environnement par projet, nous utilisons les venv. L’utilitaire pour les créer fait parti du package standard.

Ci dessous, vous avez les grandes lignes mais consultez la documentation : https://docs.python.org/3/library/venv.html pour plus de précisions.

2.1.1 Création de l’environnement virtuel

L’outil s’utilise en ligne de commande et il faut commencer par créer l’environnement virtuel. La commande est de la forme :

python3.XX -m venv [ENV_DIR]

où :

  • python3.XX est la version de Python utilisée pour créer le venv et sera la version active de cet environnement. En fonction de votre système, vous pourrez avoir besoin de déclarer le chemin absolu.
  • -m venv est la commande de création du venv.
  • [ENV_DIR] est le nom du répertoire où sera créé le venv. De manière générale, il est créé à la racine du projet et est nommé .venv.

La commande habituelle, exécutée dans le répertoire du projet, est sous cette forme (en supposant l’usage de python3.14) :

python3.14 -m venv .venv

2.1.2 Activation de l’environnement virtuel

Créer un environnement virtuel consiste à créer un répertoire. Pour pouvoir l’utiliser, il faut l’activer. La commande va dépende re votre système. Les exemples suivants considèrent que l’environnement virtuel a été créé dans un répertoire .venv.

Sous sh, bash ou zsh :

source .venv/bin/activate

Sous Windows, avec le PowerShell

.venv/bin/Activate.ps1

Sous Windows, avec le cmd.exe

.venv\Scripts\activate.bat

2.1.3 Désactiver un environnement virtuel

Si vous avez besoin de sortir de l’environnement virtuel, c’est à dire de le désactiver dans le terminal, l’instruction est :

deactivate

2.1.4 Supprimer un environnement virtuel

Supprimer un environnement virtuel consiste à supprimer le répertoire qui le contient.

2.1.5 Les environnements virtuels et les gestionnaires de version

Le répertoire d’un environnement virtuel n’est pas sous contrôle de version. Ces environnement sont volumineux et peuvent contenir des packages spécifiques à votre système (OS ou architecture). Les environnements virtuels se reconstruisent.

2.1.6 Les environnements virtuels et les IDEs

Les principaux IDEs (PyCharm et Visual Studio Code) on des outils plus graphiques de gestion des environnements virtuels. Il ne s’agit cependant que d’une interface sur les instructions présentées ici.

2.2 Gérer des dépendances de manière standard

Les dépendances se gèrent de manière standard avec pip.

2.2.1 Installer une dépendance

Pour installer une dépendance :

pip install pytest

Vous pouvez installer plusieurs dépendances en une instruction

pip install pytest pylint ruff

2.2.2 Mettre à jour une dépendance

pip install --upgrade pytest

Pour information, pip se met à jour par lui même :

pip install --upgrade pip

2.2.3 Supprimer une dépendance

pip uninstall pytest

2.2.4 Lister les dépendances

pip list

2.2.5 Gérer les dépendances d’un projet, approche historique

Historiquement, les dépendances d’un projet sont déclarées dans un fichier requirements.txt, ce qui facilite leur installation. Ce fichier doit suivre une certaine syntaxe. Le plus simple est de le générer, à l’aide de l’instruction :

pip freeze

Cette instruction affichera dans le terminal les bibliothèques installées avec la syntaxe suivante :

flake8==5.0.4
ipython==8.11.0
pylint==2.15.5
pytest==7.0.1

Pour créer le fichier, il suffit de rediriger la sortie standard vers le fichier :

pip freeze > requirements.txt

Pour installer le contenu du fichier :

pip install -r requirements.txt

Il est également possible d’utiliser ce fichier pour mettre à jour des dépendances :

pip install --upgrade -r requirements.txt

2.3 L’approche packaging standard

Un programme Python, dans sa forme la plus simple, est une arborescence de fichiers. Python prévoit également la possibilité de packager le code pour en faite un package. C’est exactement le type de fichiers que vous installez avec pip instal. Mais créer un projet destiné au packaging a aussi un intérêt dans le cadre du développement.

Un projet destiné au packaging a une structure particulière (src-based layout) et est décrit dans un fichier pyproject.toml.

Il y a plusieurs intérêts pour le développement.

2.3.1 Installation du projet en mode éditable

pip install -e .

Le projet actuel n’est pas installé, un lien est créé dans la bibliothèque des packages vers l’arborescence. Ceci permet de ne plus avoir de problème de chemin vers les ressources.

2.3.2 Une gestion centralisée des dépendances

Lorsqu’un projet est destiné au packaging, la création d’un package ne regarde pas le fichier requirements.txt. Les dépendances sont décrites dans le pyproject.toml.

Depuis pip 26.2, il est possible d’utiliser le fichier pyproject.toml et se passer du requirements.txt :

pip install . --only-deps

En général, dans un pyproject.toml, les dépendances ne sont que les dépendances de prod. Les dépendances de développement sont un groupe habituellement nommé dev et que l’on peut installer par :

pip install --group dev