Skip to article frontmatterSkip to article content

Définition

On appelle ici environnement de développement un espace restreint, facile à reproduire et à effacer qui prend en compte l’ensemble des dépendances de notre projet Python. Il permet de travailler de manière isolée. Il permet également à d’autres contributeurs de travailler dans une même configuration.

Les outils

Il en existe un certain nombre et c’est en les utilisant que l’on peut se faire sa propre opinion. J’utilise pour ma part mamba et pixi car je ne développe pas qu’en Python et conda-forge est bien pratique lorsqu’on a des dépendances à des librairies écrites dans d’autres langages. Mais, pour des développements que Python, d’autres choix peuvent être plus pertinents.

Voici une liste d’outils que vous pouvez utiliser pour créer vos environnements de développement

Définir ses dépendances via requirements.txt ou environment.yml

Si nous avons vu précédemment que certains outils pouvaient écrire leur propre fichier indiquant les dépendances d’un environnement, nous allons voir ici deux formats un peu plus universels

Exemple de fichier requirements.txt

Sans versions définies

numpy
matplotlib
jupyterlab

Avec des versions bien précises

numpy>1.20
matplotlib==3.7.1
jupyterlab>4.0,<4.1

Exemple de fichier environment.yml

Sans versions définies

name: my-env
channels:
    - conda-forge
dependencies:
    - numpy
    - matplotlib
    - jupyterlab

Avec des versions bien précises

name: my-env
channels:
    - conda-forge
dependencies:
    - numpy>1.20
    - matplotlib=3.7.1
    - jupyterlab>4.0,<4.1

Installer son environnement

Avec le fichier requirements.txt

pipenv install -r requirements.txt

Avec le fichier environment.yml

Cet étape se fait uniquement avec mamba.

mamba env create --file environment.yml

Il ne reste plus qu’à activer l’environment

mamba activate my-env

Utilisation de uv

Il est également possible de construire son environnement via uv de manière incrémentale en ajoutant au fur et à mesure les dépendances de son projet et en créant un ensemble de tâches nous facilitant le travail.

La première chose à faire est d’installer uv en suivant ce lien: https://docs.astral.sh/uv/getting-started/installation/

Placez-vous dans le répertoire practical_session, puis initialiser l’environnement de développement en utilisant la commande suivante

uv init

Vous avez à présent un fichier pyproject.toml qui initialise votre environnement de développement. Il contient normalement au moins les éléments suivants

[project]
name = "project-name"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.10"
dependencies = []

Vous pouvez facilement ajouter vos dépendances à l’aide de la commande uv add.

uv add numpy

Vous pouvez mettre à jour votre environnement avec la commande

uv sync

Utilisation de pixi

Il est également possible de construire son environnement via pixi de manière incrémentale en ajoutant au fur et à mesure les dépendances de son projet et en créant un ensemble de tâches nous facilitant le travail.

La première chose à faire est d’installer pixi en suivant ce lien: https://pixi.sh/latest/installation/

Placez-vous dans le répertoire practical_session, puis initialiser l’environnement de développement en utilisant la commande suivante

pixi init

Vous avez à présent un fichier pixi.toml qui initialise votre environnement de développement. Il contient normalement au moins les éléments suivants

[project]
name = "project name"
channels = ["conda-forge"]
platforms = ["osx-arm64"]

[tasks]

[dependencies]

La section projet vous permet de spécifier où aller chercher les paquets (ici conda-forge) et pour quel type de plateforme (ici osx-arm64).

Vous pouvez facilement ajouter vos dépendances à l’aide de la commande pixi add.

pixi add numpy

Si vous retournez dans le fichier pixi.toml vous devriez voir l’ajout de numpy dans les dépendances avec une version fixée. Un fichier pixi.lock a également été créé. Ce fichier contient l’arbre des dépendances permettant de réinstaller à l’identique votre environnement de développement.

Nous souhaiterions à présent que cet environnement soit installable sur différentes plateformes (linux, macos, windows). Nous allons ici ajouter la plateforme linux-64 directement dans le fichier pixi.toml. Avec la commande

pixi update

nous mettons à jour pixi.lock.

Pour travailler dans l’environnement, vous disposez de deux commandes pixi runpour exécuter une ligne de commande ou pixi shell qui peut être vu comme l’équivalent de l’activation de l’environnement pour mamba.

Nous ne rentrerons pas plus dans les détails de l’utilisation de pixi car ce n’est pas l’objet de cette formation. Vous verrez dans la suite de cette formation d’autres commandes qui pourront vous être utiles.