« Environnements virtuels Python » : différence entre les versions
Page créée avec « Les scripts Python utilisent souvent des paquets et modules qui ne font pas partie de la bibliothèque standard. Ils nécessitent aussi, parfois, une version spécifique d'une bibliothèque, par exemple parce qu'un certain bug a été corrigé ou encore que le programme a été implémenté en utilisant une version obsolète de l'interface de cette bibliothèque. Comment alors pouvoir exploiter une version n d'un module dans un programme et une version n-1 dans... » |
mAucun résumé des modifications |
||
| Ligne 60 : | Ligne 60 : | ||
>>> | >>> | ||
</syntaxhighlight>voila le module n'est plus installé.<blockquote>Lors de la rédaction de cette page j'ai utilisé la doc officielle :https://docs.python.org/fr/3/tutorial/venv.html et l'aide de copilot https://m365.cloud.microsoft/chat/.</blockquote> | </syntaxhighlight>voila le module n'est plus installé.<blockquote>Lors de la rédaction de cette page j'ai utilisé la doc officielle :https://docs.python.org/fr/3/tutorial/venv.html et l'aide de copilot https://m365.cloud.microsoft/chat/.</blockquote> | ||
= Utilisation de Git et des environnements virtuels Python (venv) = | |||
Cette page décrit une méthode simple pour gérer un projet Python avec Git et un environnement virtuel (venv). | |||
== Principe général == | |||
Le dépôt Git contient : | |||
* le code source ; | |||
* la documentation ; | |||
* les fichiers de configuration ; | |||
* la liste des dépendances Python. | |||
Le dépôt Git ne contient pas : | |||
* le venv ; | |||
* les modules installés ; | |||
* les fichiers temporaires Python. | |||
L'environnement virtuel est recréé sur chaque machine à partir du fichier ''requirements.txt''. | |||
== Structure recommandée == | |||
<pre> | |||
elec-lab/ | |||
├── .git/ | |||
├── .gitignore | |||
├── .venv/ | |||
├── README.md | |||
├── requirements.txt | |||
├── src/ | |||
└── tests/ | |||
</pre> | |||
== Création du dépôt == | |||
Créer un dépôt vide sur le serveur Git : | |||
<pre> | |||
repo/elec-lab | |||
</pre> | |||
Puis cloner le projet : | |||
<pre> | |||
git clone git:repo/elec-lab | |||
cd elec-lab | |||
</pre> | |||
== Création du venv == | |||
Depuis la racine du dépôt : | |||
<pre> | |||
python3 -m venv .venv | |||
</pre> | |||
Activation : | |||
<pre> | |||
source .venv/bin/activate | |||
</pre> | |||
L'invite change généralement : | |||
<pre> | |||
(.venv) admin@machine:~/sources/elec-lab$ | |||
</pre> | |||
== Installation des modules == | |||
Exemple : | |||
<pre> | |||
pip install pyserial | |||
pip install tenma | |||
</pre> | |||
Vérifier les modules installés : | |||
<pre> | |||
pip list | |||
</pre> | |||
== Fichier .gitignore == | |||
Créer un fichier : | |||
<pre> | |||
.gitignore | |||
</pre> | |||
Contenu conseillé : | |||
<pre> | |||
# Environnement virtuel | |||
.venv/ | |||
# Cache Python | |||
__pycache__/ | |||
*.pyc | |||
# Fichiers d'éditeur | |||
.vscode/ | |||
.idea/ | |||
# Fichiers temporaires | |||
*.log | |||
</pre> | |||
== Génération du fichier requirements.txt == | |||
Après installation des dépendances : | |||
<pre> | |||
pip freeze > requirements.txt | |||
</pre> | |||
Exemple : | |||
<pre> | |||
pyserial==3.5 | |||
tenma==1.1.1 | |||
</pre> | |||
== Premier commit == | |||
Ajouter les fichiers : | |||
<pre> | |||
git add . | |||
</pre> | |||
Créer un commit : | |||
<pre> | |||
git commit -m "Initial commit" | |||
</pre> | |||
Envoyer sur le serveur : | |||
<pre> | |||
git push -u origin master | |||
</pre> | |||
ou selon la configuration : | |||
<pre> | |||
git push -u origin main | |||
</pre> | |||
== Cycle de développement quotidien == | |||
Modifier les fichiers puis : | |||
<pre> | |||
git status | |||
git add . | |||
git commit -m "Description de la modification" | |||
git push | |||
</pre> | |||
== Récupération du projet sur un autre poste == | |||
Cloner le dépôt : | |||
<pre> | |||
git clone git:repo/elec-lab | |||
cd elec-lab | |||
</pre> | |||
Créer un nouveau venv : | |||
<pre> | |||
python3 -m venv .venv | |||
</pre> | |||
Activer le venv : | |||
<pre> | |||
source .venv/bin/activate | |||
</pre> | |||
Réinstaller les dépendances : | |||
<pre> | |||
pip install -r requirements.txt | |||
</pre> | |||
Le projet est alors prêt à être utilisé. | |||
== pip list ou pip freeze ? == | |||
=== pip list === | |||
Affichage lisible des paquets installés : | |||
<pre> | |||
pip list | |||
</pre> | |||
Exemple : | |||
<pre> | |||
Package Version | |||
---------- ------- | |||
pyserial 3.5 | |||
tenma 1.1.1 | |||
</pre> | |||
Utilisé principalement pour consulter l'environnement. | |||
=== pip freeze === | |||
Affichage compatible avec requirements.txt : | |||
<pre> | |||
pip freeze | |||
</pre> | |||
Exemple : | |||
<pre> | |||
pyserial==3.5 | |||
tenma==1.1.1 | |||
</pre> | |||
Utilisé principalement pour : | |||
<pre> | |||
pip freeze > requirements.txt | |||
</pre> | |||
== Plusieurs fichiers .gitignore == | |||
Un dépôt peut contenir plusieurs fichiers .gitignore. | |||
Exemple : | |||
<pre> | |||
elec-lab/ | |||
├── .gitignore | |||
├── src/ | |||
│ ├── .gitignore | |||
│ └── main.py | |||
└── docs/ | |||
└── .gitignore | |||
</pre> | |||
Les règles sont cumulatives : | |||
* le .gitignore de la racine s'applique à tout le dépôt | |||
Version du 25 juillet 2026 à 14:25
Les scripts Python utilisent souvent des paquets et modules qui ne font pas partie de la bibliothèque standard. Ils nécessitent aussi, parfois, une version spécifique d'une bibliothèque, par exemple parce qu'un certain bug a été corrigé ou encore que le programme a été implémenté en utilisant une version obsolète de l'interface de cette bibliothèque.
Comment alors pouvoir exploiter une version n d'un module dans un programme et une version n-1 dans un autre. C'est pour cela que le mécanisme des environnement virtuels à été crée.
Bon maintenant il est devenu obligatoire dans pas mal d'installations de base. C'est par exemple le cas pour Raspberry OS (Debian pour Raspberry PI), en tout cas pour ma version Debian GNU/Linux 12 (bookworm).
Dans cette page on va réutiliser l'exemple de la doc.
tutorial-env
Création et utilisation
Création d'un environnement.
Pour créer un environnement on se déplace dans son répertoire parente et on le crée:
cd sources
python -m venv tutorial-env
C'est parfois un peu lent. prendre patience.
Activation
Un fois crée il faut l'activer :
source tutorial-env/bin/activate
l'environnement est alors lancé et configuré. On sait qu'on est connecté à un venv car l'invite de commande est changée. Le nom de l'environnement est ajouté avant.
$ source tutorial-env/bin/activate
(tutorial-env) $
On devra relancer le source chaque fois qu'on se délogue/relogue.
Désactivation
Le but initial est de pouvoir travailler sur plusieurs programmes sur la même machine qui possède des dépendances différentes. Il faut pouvoir changer de venv. Pour cela on a une commande pour "désactiver" un environnement. C'est la fonction symétrique de activate.
(tutorial-env) $ deactivate
$
Gestion des paquets
On utilise pip comme d'habitude. Par exemple si je veux installer pyttsx3:
python -m pip install pyttsx3
qui fonctionne comme si on était dans un environnement classique :
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pyttsx3
Downloading https://www.piwheels.org/simple/pyttsx3/pyttsx3-2.99-py3-none-any.whl (32 kB)
Installing collected packages: pyttsx3
Successfully installed pyttsx3-2.99
on peut alors utiliser le module.
(tutorial-env) $ python3
Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyttsx3
>>> engine = pyttsx3.init()
>>>
si on désactive le venv avec deactivate :
(tutorial-env) $ deactivate
$ python3
Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyttsx3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pyttsx3'
>>>
voila le module n'est plus installé.
Lors de la rédaction de cette page j'ai utilisé la doc officielle :https://docs.python.org/fr/3/tutorial/venv.html et l'aide de copilot https://m365.cloud.microsoft/chat/.
Utilisation de Git et des environnements virtuels Python (venv)
Cette page décrit une méthode simple pour gérer un projet Python avec Git et un environnement virtuel (venv).
Principe général
Le dépôt Git contient :
- le code source ;
- la documentation ;
- les fichiers de configuration ;
- la liste des dépendances Python.
Le dépôt Git ne contient pas :
- le venv ;
- les modules installés ;
- les fichiers temporaires Python.
L'environnement virtuel est recréé sur chaque machine à partir du fichier requirements.txt.
Structure recommandée
elec-lab/ ├── .git/ ├── .gitignore ├── .venv/ ├── README.md ├── requirements.txt ├── src/ └── tests/
Création du dépôt
Créer un dépôt vide sur le serveur Git :
repo/elec-lab
Puis cloner le projet :
git clone git:repo/elec-lab cd elec-lab
Création du venv
Depuis la racine du dépôt :
python3 -m venv .venv
Activation :
source .venv/bin/activate
L'invite change généralement :
(.venv) admin@machine:~/sources/elec-lab$
Installation des modules
Exemple :
pip install pyserial pip install tenma
Vérifier les modules installés :
pip list
Fichier .gitignore
Créer un fichier :
.gitignore
Contenu conseillé :
# Environnement virtuel .venv/ # Cache Python __pycache__/ *.pyc # Fichiers d'éditeur .vscode/ .idea/ # Fichiers temporaires *.log
Génération du fichier requirements.txt
Après installation des dépendances :
pip freeze > requirements.txt
Exemple :
pyserial==3.5 tenma==1.1.1
Premier commit
Ajouter les fichiers :
git add .
Créer un commit :
git commit -m "Initial commit"
Envoyer sur le serveur :
git push -u origin master
ou selon la configuration :
git push -u origin main
Cycle de développement quotidien
Modifier les fichiers puis :
git status git add . git commit -m "Description de la modification" git push
Récupération du projet sur un autre poste
Cloner le dépôt :
git clone git:repo/elec-lab cd elec-lab
Créer un nouveau venv :
python3 -m venv .venv
Activer le venv :
source .venv/bin/activate
Réinstaller les dépendances :
pip install -r requirements.txt
Le projet est alors prêt à être utilisé.
pip list ou pip freeze ?
pip list
Affichage lisible des paquets installés :
pip list
Exemple :
Package Version ---------- ------- pyserial 3.5 tenma 1.1.1
Utilisé principalement pour consulter l'environnement.
pip freeze
Affichage compatible avec requirements.txt :
pip freeze
Exemple :
pyserial==3.5 tenma==1.1.1
Utilisé principalement pour :
pip freeze > requirements.txt
Plusieurs fichiers .gitignore
Un dépôt peut contenir plusieurs fichiers .gitignore.
Exemple :
elec-lab/
├── .gitignore
├── src/
│ ├── .gitignore
│ └── main.py
└── docs/
└── .gitignore
Les règles sont cumulatives :
- le .gitignore de la racine s'applique à tout le dépôt