Environnements virtuels¶
đ Traduction par IA et humains
Cette traduction a Ă©tĂ© rĂ©alisĂ©e par une IA guidĂ©e par des humains. đ€
Elle peut contenir des erreurs d'interprĂ©tation du sens original, ou paraĂźtre peu naturelle, etc. đ€
Vous pouvez améliorer cette traduction en nous aidant à mieux guider le LLM d'IA.
Lorsque vous travaillez sur des projets Python, vous devriez probablement utiliser un environnement virtuel (ou un mécanisme similaire) pour isoler les packages que vous installez pour chaque projet.
Info
Si vous connaissez dĂ©jĂ les environnements virtuels, comment les crĂ©er et les utiliser, vous pouvez passer cette section. đ€
Astuce
Un environnement virtuel est diffĂ©rent dâune variable dâenvironnement.
Une variable dâenvironnement est une variable du systĂšme qui peut ĂȘtre utilisĂ©e par des programmes.
Un environnement virtuel est un répertoire contenant certains fichiers.
Info
Cette page vous apprendra Ă utiliser les environnements virtuels et Ă comprendre leur fonctionnement.
Si vous ĂȘtes prĂȘt Ă adopter un outil qui gĂšre tout pour vous (y compris lâinstallation de Python), essayez uv.
CrĂ©er un projet¶
Commencez par créer un répertoire pour votre projet.
Ce que je fais gĂ©nĂ©ralement, câest crĂ©er un rĂ©pertoire nommĂ© code dans mon rĂ©pertoire personnel/utilisateur.
Et Ă lâintĂ©rieur, je crĂ©e un rĂ©pertoire par projet.
// Aller au répertoire personnel
$ cd
// Créer un répertoire pour tous vos projets de code
$ mkdir code
// Entrer dans ce répertoire code
$ cd code
// Créer un répertoire pour ce projet
$ mkdir awesome-project
// Entrer dans ce répertoire de projet
$ cd awesome-project
CrĂ©er un environnement virtuel¶
Lorsque vous commencez à travailler sur un projet Python pour la premiÚre fois, créez un environnement virtuel dans votre projet.
Astuce
Vous nâavez besoin de faire cela quâune seule fois par projet, pas Ă chaque fois que vous travaillez.
Pour créer un environnement virtuel, vous pouvez utiliser le module venv fourni avec Python.
$ python -m venv .venv
Que signifie cette commande
python: utiliser le programme nommĂ©python-m: appeler un module comme un script, nous prĂ©ciserons ensuite quel modulevenv: utiliser le module nommĂ©venvqui est normalement installĂ© avec Python.venv: crĂ©er lâenvironnement virtuel dans le nouveau rĂ©pertoire.venv
Si vous avez installĂ© uv, vous pouvez lâutiliser pour crĂ©er un environnement virtuel.
$ uv venv
Astuce
Par défaut, uv créera un environnement virtuel dans un répertoire appelé .venv.
Mais vous pouvez le personnaliser en passant un argument supplémentaire avec le nom du répertoire.
Cette commande crée un nouvel environnement virtuel dans un répertoire appelé .venv.
.venv ou autre nom
Vous pourriez crĂ©er lâenvironnement virtuel dans un autre rĂ©pertoire, mais il est dâusage de lâappeler .venv.
Activer lâenvironnement virtuel¶
Activez le nouvel environnement virtuel afin que toute commande Python que vous exĂ©cutez ou tout package que vous installez lâutilise.
Astuce
Faites cela à chaque fois que vous démarrez une nouvelle session de terminal pour travailler sur le projet.
$ source .venv/bin/activate
$ .venv\Scripts\Activate.ps1
Ou si vous utilisez Bash pour Windows (par exemple Git Bash) :
$ source .venv/Scripts/activate
Astuce
Chaque fois que vous installez un nouveau package dans cet environnement, activez de nouveau lâenvironnement.
Vous vous assurez ainsi que si vous utilisez un programme de terminal (CLI) installĂ© par ce package, vous utilisez celui de votre environnement virtuel et non un autre qui pourrait ĂȘtre installĂ© globalement, probablement avec une version diffĂ©rente de celle dont vous avez besoin.
VĂ©rifier que lâenvironnement virtuel est actif¶
VĂ©rifiez que lâenvironnement virtuel est actif (la commande prĂ©cĂ©dente a fonctionnĂ©).
Astuce
Câest facultatif, mais câest une bonne maniĂšre de vĂ©rifier que tout fonctionne comme prĂ©vu et que vous utilisez lâenvironnement virtuel voulu.
$ which python
/home/user/code/awesome-project/.venv/bin/python
Sâil affiche le binaire python Ă .venv/bin/python, dans votre projet (dans cet exemple awesome-project), alors cela a fonctionnĂ©. đ
$ Get-Command python
C:\Users\user\code\awesome-project\.venv\Scripts\python
Sâil affiche le binaire python Ă .venv\Scripts\python, dans votre projet (dans cet exemple awesome-project), alors cela a fonctionnĂ©. đ
Mettre Ă niveau pip¶
Astuce
Si vous utilisez uv, vous lâutiliserez pour installer des Ă©lĂ©ments Ă la place de pip, vous nâavez donc pas besoin de mettre pip Ă niveau. đ
Si vous utilisez pip pour installer des packages (il est fourni par défaut avec Python), vous devez le mettre à niveau vers la derniÚre version.
Beaucoup dâerreurs exotiques lors de lâinstallation dâun package se rĂ©solvent simplement en mettant dâabord pip Ă niveau.
Astuce
Vous feriez normalement cela une seule fois, juste aprĂšs avoir créé lâenvironnement virtuel.
Vous devez vous assurer que lâenvironnement virtuel est actif (avec la commande ci-dessus), puis exĂ©cuter :
$ python -m pip install --upgrade pip
---> 100%
Astuce
Parfois, vous pourriez obtenir une erreur No module named pip en essayant de mettre Ă niveau pip.
Si cela arrive, installez et mettez Ă niveau pip avec la commande ci-dessous :
$ python -m ensurepip --upgrade
---> 100%
Cette commande installera pip sâil nâest pas dĂ©jĂ installĂ© et garantit aussi que la version de pip installĂ©e est au moins aussi rĂ©cente que celle disponible dans ensurepip.
Ajouter .gitignore¶
Si vous utilisez Git (vous devriez), ajoutez un fichier .gitignore pour exclure tout ce qui se trouve dans votre .venv de Git.
Astuce
Si vous avez utilisĂ© uv pour crĂ©er lâenvironnement virtuel, il lâa dĂ©jĂ fait pour vous, vous pouvez passer cette Ă©tape. đ
Astuce
Faites cela une seule fois, juste aprĂšs avoir créé lâenvironnement virtuel.
$ echo "*" > .venv/.gitignore
Que signifie cette commande
echo "*": va « afficher » le texte*dans le terminal (la partie suivante change un peu cela)>: tout ce qui est affichĂ© dans le terminal par la commande Ă gauche de>ne doit pas ĂȘtre affichĂ© mais Ă©crit dans le fichier Ă droite de>.gitignore: le nom du fichier dans lequel le texte doit ĂȘtre Ă©crit
Et * signifie pour Git « tout ». Ainsi, il ignorera tout dans le répertoire .venv.
Cette commande créera un fichier .gitignore avec le contenu :
*
Installer des packages¶
AprĂšs avoir activĂ© lâenvironnement, vous pouvez y installer des packages.
Astuce
Faites cela une seule fois lorsque vous installez ou mettez à niveau les packages nécessaires à votre projet.
Si vous devez mettre Ă niveau une version ou ajouter un nouveau package, vous le referez.
Installer des packages directement¶
Si vous ĂȘtes pressĂ© et ne souhaitez pas utiliser un fichier pour dĂ©clarer les dĂ©pendances de votre projet, vous pouvez les installer directement.
Astuce
Câest une trĂšs bonne idĂ©e de placer les packages et leurs versions nĂ©cessaires Ă votre programme dans un fichier (par exemple requirements.txt ou pyproject.toml).
$ pip install "fastapi[standard]"
---> 100%
Si vous avez uv :
$ uv pip install "fastapi[standard]"
---> 100%
Installer depuis requirements.txt¶
Si vous avez un requirements.txt, vous pouvez maintenant lâutiliser pour installer ses packages.
$ pip install -r requirements.txt
---> 100%
Si vous avez uv :
$ uv pip install -r requirements.txt
---> 100%
requirements.txt
Un requirements.txt avec quelques packages pourrait ressembler Ă :
fastapi[standard]==0.113.0
pydantic==2.8.0
ExĂ©cuter votre programme¶
AprĂšs avoir activĂ© lâenvironnement virtuel, vous pouvez exĂ©cuter votre programme, et il utilisera le Python de votre environnement virtuel avec les packages que vous y avez installĂ©s.
$ python main.py
Hello World
Configurer votre Ă©diteur¶
Vous utiliserez probablement un Ă©diteur, assurez-vous de le configurer pour utiliser le mĂȘme environnement virtuel que vous avez créé (il le dĂ©tectera probablement automatiquement) afin dâavoir lâautocomplĂ©tion et les erreurs inline.
Par exemple :
Astuce
Vous devez normalement faire cela une seule fois, lorsque vous crĂ©ez lâenvironnement virtuel.
DĂ©sactiver lâenvironnement virtuel¶
Une fois que vous avez fini de travailler sur votre projet, vous pouvez dĂ©sactiver lâenvironnement virtuel.
$ deactivate
Ainsi, lorsque vous exĂ©cutez python, il nâessaiera pas de lâexĂ©cuter depuis cet environnement virtuel avec les packages qui y sont installĂ©s.
PrĂȘt Ă travailler¶
Vous ĂȘtes maintenant prĂȘt Ă commencer Ă travailler sur votre projet.
Astuce
Voulez-vous comprendre tout ce qui précÚde ?
Continuez la lecture. đđ€
Pourquoi des environnements virtuels¶
Pour travailler avec FastAPI, vous devez installer Python.
Ensuite, vous devrez installer FastAPI et tout autre package que vous souhaitez utiliser.
Pour installer des packages, vous utiliseriez normalement la commande pip fournie avec Python (ou des alternatives similaires).
NĂ©anmoins, si vous utilisez simplement pip directement, les packages seraient installĂ©s dans votre environnement Python global (lâinstallation globale de Python).
Le problĂšme¶
Alors, quel est le problĂšme dâinstaller des packages dans lâenvironnement Python global ?
Ă un moment donnĂ©, vous finirez probablement par Ă©crire de nombreux programmes diffĂ©rents qui dĂ©pendent de packages diffĂ©rents. Et certains de ces projets sur lesquels vous travaillez dĂ©pendront de versions diffĂ©rentes du mĂȘme package. đ±
Par exemple, vous pourriez crĂ©er un projet appelĂ© philosophers-stone, ce programme dĂ©pend dâun autre package appelĂ© harry, en version 1. Vous devez donc installer harry.
flowchart LR
stone(philosophers-stone) -->|requires| harry-1[harry v1]
Puis, plus tard, vous créez un autre projet appelé prisoner-of-azkaban, et ce projet dépend aussi de harry, mais il a besoin de harry en version 3.
flowchart LR
azkaban(prisoner-of-azkaban) --> |requires| harry-3[harry v3]
Mais maintenant, le problĂšme est que, si vous installez les packages globalement (dans lâenvironnement global) au lieu de dans un environnement virtuel local, vous devrez choisir quelle version de harry installer.
Si vous voulez exĂ©cuter philosophers-stone, vous devrez dâabord installer harry en version 1, par exemple avec :
$ pip install "harry==1"
Et vous vous retrouverez avec harry en version 1 installé dans votre environnement Python global.
flowchart LR
subgraph global[global env]
harry-1[harry v1]
end
subgraph stone-project[philosophers-stone project]
stone(philosophers-stone) -->|requires| harry-1
end
Mais si vous voulez ensuite exécuter prisoner-of-azkaban, vous devrez désinstaller harry version 1 et installer harry version 3 (ou bien installer la version 3 désinstallerait automatiquement la version 1).
$ pip install "harry==3"
Et vous vous retrouverez alors avec harry version 3 installé dans votre environnement Python global.
Et si vous essayez dâexĂ©cuter Ă nouveau philosophers-stone, il y a une chance que cela ne fonctionne pas car il a besoin de harry version 1.
flowchart LR
subgraph global[global env]
harry-1[<strike>harry v1</strike>]
style harry-1 fill:#ccc,stroke-dasharray: 5 5
harry-3[harry v3]
end
subgraph stone-project[philosophers-stone project]
stone(philosophers-stone) -.-x|âïž| harry-1
end
subgraph azkaban-project[prisoner-of-azkaban project]
azkaban(prisoner-of-azkaban) --> |requires| harry-3
end
Astuce
Il est trÚs courant que les packages Python fassent de leur mieux pour éviter les changements cassants dans les nouvelles versions, mais il vaut mieux jouer la sécurité et installer de nouvelles versions intentionnellement et lorsque vous pouvez exécuter les tests pour vérifier que tout fonctionne correctement.
Maintenant, imaginez cela avec beaucoup dâautres packages dont tous vos projets dĂ©pendent. Câest trĂšs difficile Ă gĂ©rer. Et vous finiriez probablement par exĂ©cuter certains projets avec des versions incompatibles des packages, sans savoir pourquoi quelque chose ne fonctionne pas.
De plus, selon votre systĂšme dâexploitation (par exemple Linux, Windows, macOS), il se peut quâil soit livrĂ© avec Python dĂ©jĂ installĂ©. Et dans ce cas, il avait probablement des packages prĂ©installĂ©s avec des versions spĂ©cifiques nĂ©cessaires Ă votre systĂšme. Si vous installez des packages dans lâenvironnement Python global, vous pourriez finir par casser certains des programmes fournis avec votre systĂšme dâexploitation.
OĂč les packages sont-ils installĂ©s¶
Lorsque vous installez Python, il crée des répertoires avec des fichiers sur votre ordinateur.
Certains de ces répertoires sont chargés de contenir tous les packages que vous installez.
Lorsque vous exécutez :
// Ne lâexĂ©cutez pas maintenant, câest juste un exemple đ€
$ pip install "fastapi[standard]"
---> 100%
Cela téléchargera un fichier compressé avec le code de FastAPI, normalement depuis PyPI.
Il tĂ©lĂ©chargera Ă©galement des fichiers pour dâautres packages dont FastAPI dĂ©pend.
Ensuite, il extraira tous ces fichiers et les placera dans un répertoire de votre ordinateur.
Par dĂ©faut, il placera ces fichiers tĂ©lĂ©chargĂ©s et extraits dans le rĂ©pertoire fourni avec votre installation de Python, câest lâenvironnement global.
Quâest-ce quâun environnement virtuel¶
La solution aux problĂšmes posĂ©s par le fait dâavoir tous les packages dans lâenvironnement global est dâutiliser un environnement virtuel pour chaque projet sur lequel vous travaillez.
Un environnement virtuel est un rĂ©pertoire, trĂšs similaire Ă celui global, oĂč vous pouvez installer les packages pour un projet.
De cette maniÚre, chaque projet aura son propre environnement virtuel (répertoire .venv) avec ses propres packages.
flowchart TB
subgraph stone-project[philosophers-stone project]
stone(philosophers-stone) --->|requires| harry-1
subgraph venv1[.venv]
harry-1[harry v1]
end
end
subgraph azkaban-project[prisoner-of-azkaban project]
azkaban(prisoner-of-azkaban) --->|requires| harry-3
subgraph venv2[.venv]
harry-3[harry v3]
end
end
stone-project ~~~ azkaban-project
Que signifie activer un environnement virtuel¶
Lorsque vous activez un environnement virtuel, par exemple avec :
$ source .venv/bin/activate
$ .venv\Scripts\Activate.ps1
Ou si vous utilisez Bash pour Windows (par exemple Git Bash) :
$ source .venv/Scripts/activate
Cette commande crĂ©era ou modifiera certaines variables dâenvironnement qui seront disponibles pour les prochaines commandes.
Lâune de ces variables est la variable PATH.
Astuce
Vous pouvez en savoir plus sur la variable dâenvironnement PATH dans la section Variables dâenvironnement.
Activer un environnement virtuel ajoute son chemin .venv/bin (sur Linux et macOS) ou .venv\Scripts (sur Windows) Ă la variable dâenvironnement PATH.
Disons quâavant dâactiver lâenvironnement, la variable PATH ressemblait Ă ceci :
/usr/bin:/bin:/usr/sbin:/sbin
Cela signifie que le systĂšme chercherait des programmes dansâŻ:
/usr/bin/bin/usr/sbin/sbin
C:\Windows\System32
Cela signifie que le systĂšme chercherait des programmes dansâŻ:
C:\Windows\System32
AprĂšs avoir activĂ© lâenvironnement virtuel, la variable PATH ressemblerait Ă quelque chose comme ceci :
/home/user/code/awesome-project/.venv/bin:/usr/bin:/bin:/usr/sbin:/sbin
Cela signifie que le systĂšme commencera maintenant par chercher des programmes dansâŻ:
/home/user/code/awesome-project/.venv/bin
avant de chercher dans les autres répertoires.
Ainsi, lorsque vous tapez python dans le terminal, le systĂšme trouvera le programme Python dans
/home/user/code/awesome-project/.venv/bin/python
et utilisera celui-ci.
C:\Users\user\code\awesome-project\.venv\Scripts;C:\Windows\System32
Cela signifie que le systĂšme commencera maintenant par chercher des programmes dansâŻ:
C:\Users\user\code\awesome-project\.venv\Scripts
avant de chercher dans les autres répertoires.
Ainsi, lorsque vous tapez python dans le terminal, le systĂšme trouvera le programme Python dans
C:\Users\user\code\awesome-project\.venv\Scripts\python
et utilisera celui-ci.
Un dĂ©tail important est quâil placera le chemin de lâenvironnement virtuel au dĂ©but de la variable PATH. Le systĂšme le trouvera avant de trouver tout autre Python disponible. Ainsi, lorsque vous exĂ©cutez python, il utilisera le Python de lâenvironnement virtuel au lieu de tout autre python (par exemple, un python dâun environnement global).
Activer un environnement virtuel change aussi deux ou trois autres choses, mais câest lâun des points les plus importants.
VĂ©rifier un environnement virtuel¶
Lorsque vous vérifiez si un environnement virtuel est actif, par exemple avec :
$ which python
/home/user/code/awesome-project/.venv/bin/python
$ Get-Command python
C:\Users\user\code\awesome-project\.venv\Scripts\python
Cela signifie que le programme python qui sera utilisĂ© est celui dans lâenvironnement virtuel.
Vous utilisez which sous Linux et macOS et Get-Command sous Windows PowerShell.
La façon dont cette commande fonctionne est quâelle va vĂ©rifier la variable dâenvironnement PATH, en parcourant chaque chemin dans lâordre, Ă la recherche du programme nommĂ© python. Une fois trouvĂ©, elle vous affichera le chemin vers ce programme.
La partie la plus importante est que lorsque vous appelez python, câest exactement « python » qui sera exĂ©cutĂ©.
Ainsi, vous pouvez confirmer si vous ĂȘtes dans le bon environnement virtuel.
Astuce
Il est facile dâactiver un environnement virtuel, dâobtenir un Python, puis dâaller vers un autre projet.
Et le second projet ne fonctionnerait pas parce que vous utilisez le Python incorrect, provenant dâun environnement virtuel dâun autre projet.
Il est utile de pouvoir vĂ©rifier quel python est utilisĂ©. đ€
Pourquoi dĂ©sactiver un environnement virtuel¶
Par exemple, vous pourriez travailler sur un projet philosophers-stone, activer cet environnement virtuel, installer des packages et travailler avec cet environnement.
Puis vous souhaitez travailler sur un autre projet prisoner-of-azkaban.
Vous allez vers ce projet :
$ cd ~/code/prisoner-of-azkaban
Si vous ne dĂ©sactivez pas lâenvironnement virtuel de philosophers-stone, lorsque vous exĂ©cutez python dans le terminal, il essaiera dâutiliser le Python de philosophers-stone.
$ cd ~/code/prisoner-of-azkaban
$ python main.py
// Erreur lors de l'import de sirius, il n'est pas installĂ© đ±
Traceback (most recent call last):
File "main.py", line 1, in <module>
import sirius
Mais si vous dĂ©sactivez lâenvironnement virtuel et activez le nouveau pour prisoner-of-askaban, alors lorsque vous exĂ©cuterez python, il utilisera le Python de lâenvironnement virtuel de prisoner-of-azkaban.
$ cd ~/code/prisoner-of-azkaban
// Vous nâavez pas besoin dâĂȘtre dans lâancien rĂ©pertoire pour dĂ©sactiver, vous pouvez le faire oĂč que vous soyez, mĂȘme aprĂšs ĂȘtre allĂ© dans lâautre projet đ
$ deactivate
// Activer lâenvironnement virtuel dans prisoner-of-azkaban/.venv đ
$ source .venv/bin/activate
// Maintenant, lorsque vous exĂ©cutez python, il trouvera le package sirius installĂ© dans cet environnement virtuel âš
$ python main.py
I solemnly swear đș
Alternatives¶
Ceci est un guide simple pour vous lancer et vous montrer comment tout fonctionne en dessous.
Il existe de nombreuses alternatives pour gérer les environnements virtuels, les dépendances de packages (requirements), les projets.
Lorsque vous ĂȘtes prĂȘt et souhaitez utiliser un outil pour gĂ©rer lâensemble du projet, les dĂ©pendances, les environnements virtuels, etc., je vous suggĂšre dâessayer uv.
uv peut faire beaucoup de choses, il peutâŻ:
- Installer Python pour vous, y compris différentes versions
- GĂ©rer lâenvironnement virtuel pour vos projets
- Installer des packages
- Gérer les dépendances de packages et leurs versions pour votre projet
- Vous assurer dâavoir un ensemble exact de packages et de versions Ă installer, y compris leurs dĂ©pendances, afin que vous puissiez ĂȘtre certain dâexĂ©cuter votre projet en production exactement comme sur votre ordinateur pendant le dĂ©veloppement, cela sâappelle le locking
- Et bien dâautres choses
Conclusion¶
Si vous avez lu et compris tout cela, vous en savez maintenant bien plus sur les environnements virtuels que beaucoup de dĂ©veloppeurs. đ€
ConnaĂźtre ces dĂ©tails vous sera trĂšs probablement utile Ă lâavenir lorsque vous dĂ©boguerez quelque chose qui semble complexe, mais vous saurez comment tout fonctionne en dessous. đ