{{tag>dev python venv git}}
====== Python : environnement virtuel dans Git ======
L'environnement virtuel est créé afin de garantir une isolation des dépendances nécessaires au bon fonctionnement du programme Python. Ainsi, les mises à jours des bibliothèques du système ne remplaceront pas les versions nécessaires au bon fonctionnement de l'application.
**L'environnement virtuel n'a pas à être suivi par le gestionnaire de révision Git**, il peut d'ailleurs tout à fait être créé en dehors du dépot. S'il est créé à l'intérieur du répertoire du projet il devra être ignoré.
La démarche générale est la suivante:
* On crée un répertoire projet pour le programme Python à développer, on initialise le dépôt Git;
* On crée le script Python et on fait un import initial pour commencer le suivi;
* On crée un environnement virtuel (par convention ''env'') dans le dépôt;
* On crée ou on modifie le fichier **.gitignore** pour désactiver le suivi sur l'ensemble du dossier et du contenu de ''./env''
* On active l'environnement virtuel, on installe les dépendances nécessaires au fonctionnement du script.
* Pour sauvegarder et pouvoir reconstruire l'environnement virtuel dans Git, on exporte les dépendances via la commande pip freeze dans un fichier ''requirements.txt''.
# Avant de modifier le script Python, on charge son environnement virtuel
source "./env/bin/activate"
# on travaille sur le script, on installe les modules nécessaires
pip3 install pyyaml
# Pour sauvegarder l'environnement virtuel utilisé par notre script dans Git
# on enregistre la liste des modules installés dans un fichier texte
pip3 freeze > requirements.txt
# On ajoute le fichier à l'index et on le pousse dans le dépot
git add requirements.txt
git commit -m "Fichier de création de l'environnement virtuel Python"
# pour terminer, on quitte l'environnement virtuel
deactivate
===== Le fichier .gitignore =====
.venv/
*.pyc
__pycache__/
instance/
.pytest_cache/
.coverage
htmlcov/
dist/
build/
*.egg-info/
===== Références =====
* https://stackoverflow.com/questions/60719286/actions-for-creating-venv-in-python-and-clone-a-git-repo
* https://medium.com/wealthy-bytes/the-easiest-way-to-use-a-python-virtual-environment-with-git-401e07c39cde
* https://gist.github.com/simonw/4835a22c79a8d3c29dd155c716b19e16