Gestion des versions et des paquets en Python 2/4

Création de l’environnement virtuel

Avec le lanceur Python :

py -3.12 -m venv .venv

Activation dans PowerShell :

.venv\Scripts\Activate.ps1

Activation dans cmd.exe :

.venv\Scripts\activate.bat

Désactivation :

deactivate

Sous MacOS ou Linux

Sur Mac OS et Linux, les choses sont beaucoup plus simples.

python3.12 -m venv .venv

Activation :

source .venv/bin/activate

Désactivation :

deactivate

Qu’est-ce que fait l’activation ? C’est-à-dire lorsqu’on clique sur ce script activate qui dépend de la plateforme sur laquelle on est, du nom des coupons de la plateforme sur laquelle on est.Vous avez l’environnement PowerShell, le Bash, le MacOS.Ce ne sont pas les mêmes scripts qui sont utilisés.

L’activation ne démarre pas une machine virtuelle.

Elle modifie principalement la variable PATH afin que :

python
pip

désignent en priorité les exécutables situés dans .venv.

Sous Windows :

.venv\Scripts\python.exe
.venv\Scripts\pip.exe

Sous Linux :

.venv/bin/python
.venv/bin/pip

Il est possible d’utiliser un environnement virtuel sans l’activer :

Sous Windows :

.venv\Scripts\python.exe script.py
.venv\Scripts\python.exe -m pip install requests

Sous Linux :

.venv/bin/python script.py
.venv/bin/python -m pip install requests

L’activation est donc un confort, pas une obligation technique.

Vérifier l’environnement actif

Les commandes suivantes vous permettent de diagnostiquer votre version de Python. C’est à peu près la première chose que vous faites à chaque fois que vous avez un problème, avant de chercher à résoudre, sachez avec quoi vous travaillez.

Sous Windows :

where python
python -c "import sys; print(sys.executable)"
python -m pip --version

Sous Linux :

which python
python -c "import sys; print(sys.executable)"
python -m pip --version

Résultat attendu :

...\mon-projet\.venv\Scripts\python.exe

ou :

.../mon-projet/.venv/bin/python

Doit-on versionner .venv ?

La réponse est non.D’ailleurs ce répertoire, on peut l’appeler de plusieurs façons.

Dans .gitignore :

.venv/
venv/
env/
__pycache__/
*.pyc

Un environnement virtuel :

  • contient des chemins absolus ;
  • dépend du système d’exploitation ;
  • dépend de l’architecture ;
  • peut contenir des binaires natifs ;
  • peut devenir très volumineux.

Il ne doit donc pas être copié entre machines ni ajouté à Git.

On versionne les fichiers décrivant les dépendances, pas l’environnement lui-même.

Réparer un environnement

Lorsqu’un environnement devient incohérent, le réparer paquet par paquet est souvent une mauvaise stratégie.

Approche propre :

Sous PowerShell :

deactivate
Remove-Item -Recurse -Force .venv
py -3.12 -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txt

Sous Linux :

deactivate
rm -rf .venv
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt