Aller au contenu principal
Outils Python2026-07-31 · 9 min de lecture

Environnements virtuels Python en 2026 : venv, uv, pipx, poésie — Quand utiliser lequel

Chaque didacticiel Python dit "utiliser un environnement virtuel" et continue. Celui-ci va plus loin : ce qu'EST réellement un venv, les quatre outils à connaître en 2026, un arbre de décision de 60 secondes pour choisir le bon et les deux erreurs qui interrompent votre configuration en une semaine.

Qu'est-ce qu'un environnement virtuel ?

Un venv est un répertoire contenant un lien symbolique d'interpréteur Python plus un `site-packages/` privé. Lorsqu'il est « activé », PATH ajoute <venv>/bin, donc python et pip dans votre shell pointent vers les copies du venv. pip install X écrit dans le site-packages/ de venv, pas dans celui du système Python.

C'est ça. Pas de magie. C'est un dossier avec un lien symbolique et un pyvenv.cfg.

BASH
$ python -m venv .venv $ ls .venv/ bin/ include/ lib/ pyvenv.cfg $ cat .venv/pyvenv.cfg home = /opt/homebrew/opt/python@3.13/bin include-system-site-packages = false version = 3.13.2

Tout le reste (activer les scripts, les wrappers, les gestionnaires de packages) est pratique en plus de cette forme.

Pourquoi vous en avez toujours besoin

Sans venv, pip install X écrit dans les site-packages/ de votre système Python. Trois problèmes :

1. Conflits. Le projet A a besoin de django==4.2 ; Le projet B a besoin de django==5.1. Impossible sans venvs.

2. Reproductibilité. "Fonctionne sur ma machine" est un problème système-Python. Un instantané Venv EST l'environnement.

3. Nettoyage. Supprimer un projet ? Supprimez son dossier venv. Les installations System-Python s'accumulent pour toujours.

Sur macOS 12+ et la plupart des distributions Linux, system-Python est désormais appartenant au système d'exploitation — pip peut même refuser l'installation sans --break-system-packages. C'est un indice.

Les 4 outils à connaître

1. venv — la ligne de base de stdlib

Livré avec chaque installation de Python 3.3+. Zéro dépendance. La solution de repli universelle :

BASH
python -m venv .venv # create source .venv/bin/activate # macOS / Linux .venv\Scripts\activate # Windows pip install -r requirements.txt deactivate # or close the shell

À utiliser lorsque : rédiger un didacticiel, garantir qu'un script fonctionne partout ou dans un CI verrouillé où vous ne pouvez rien installer.

2. uv — la valeur par défaut moderne (2026)

Écrit en rouille, 10 à 100 fois plus rapide que pip. Remplace venv + pip + pip-tools + pyenv-download-python. Consultez notre uv deep-dive pour la visite complète.

BASH
uv venv # create venv (uses current Python) uv venv --python 3.13 # or download + pin a version uv pip install -r requirements.txt uv run pytest # run without activating uv add fastapi # append to pyproject.toml + install uv sync # install exactly what pyproject.toml says

À utiliser quand : tout projet 2026 – solo, équipe, CI, Docker. La différence de vitesse sur un cache froid est réelle (45s pip → 2s uv sur un projet Django typique).

3. pipx — pour les outils CLI

Lorsque vous installez une CLI comme ruff, httpie, black, youtube-dl, mypy, vous ne voulez pas qu'elle soit dans votre projet venv (pourquoi dépendre de ruff pour que import project.things fonctionne ?). Et vous n'en voulez pas dans le système Python (conflits). pipx place chacun dans son propre venv isolé mais expose la CLI globalement :

BASH
pipx install ruff pipx install httpie pipx install black ruff check . # works from anywhere, no activation httpie GET api.github.com black .

À utiliser lors de : l’installation d’une CLI basée sur Python. Règle générale : « pipx install X » si X fournit un exécutable que vous exécuteriez à partir de n'importe quel projet ; uv pip install X si X est une bibliothèque que vous importez.

Remplacement moderne : « uv tool install ruff » fait la même chose sans installation pipx séparée. Choisissez l'un ou l'autre.

4. poésie — casier de dépendance mature (part en baisse)

Avant l’arrivée des UV, la « poésie » était l’outil d’emballage moderne incontournable. Excellent résolveur de dépendances, poetry.lock déterministe, intégration étroite avec pyproject.toml. Toujours solide, mais plus lent que les UV et ajoute une surcharge cognitive.

BASH
poetry new my-project poetry add fastapi poetry install poetry run pytest poetry publish

À utiliser lorsque : un projet existant utilise déjà de la poésie, ou vous avez besoin de plugins spécifiques à la poésie (par exemple poetry-plugin-export). Pour les NOUVEAUX projets en 2026, « uv » vous y amène plus rapidement avec une empreinte plus réduite.

L'arbre de décision de 60 secondes

▶ PYTHONeditable · runs in your browser

C'est tout. Aujourd'hui, 90 % des développeurs Python peuvent choisir dans cette liste sans jamais avoir besoin de « pyenv », « virtualenvwrapper », « pew » ou « conda ».

Conda — le cas particulier

conda est un univers distinct : gestionnaire de packages + gestionnaire venv + distributeur Python + gestionnaire de bibliothèque C, principalement pour Python scientifique. Si vous effectuez un travail numérique intensif avec des piles numpy / scipy / pandas / GPU qui nécessitent des versions CUDA + cuDNN correspondantes, miniconda peut toujours en valoir la peine - les binaires précompilés permettent d'économiser des heures par rapport à pip.

Sinon : plain uv est désormais également compétitif sur les piles scientifiques (les installations numpy/pandas durent quelques secondes, pas quelques minutes). N'utilisez pas conda à moins que vous n'ayez spécifiquement besoin d'un pip de liaison de bibliothèque C qui ne peut pas être facilement produit.

Les deux erreurs qui cassent votre setup en une semaine

1. Valider .venv/ dans git

Un venv contient :

  • Chemins absolus vers votre installation Python spécifique.
  • Compilation des fichiers .pyc.
  • Les binaires spécifiques au système d'exploitation.

Validez cela → votre coéquipier sous Windows ne peut rien exécuter. Ajoutez .venv/ (et venv/, .env/) à votre .gitignore EN PREMIER, puis créez le venv.

2. Activation dans le mauvais shell

source .venv/bin/activate définit les variables d'environnement dans le shell CURRENT uniquement. Si vous ouvrez un nouvel onglet de terminal, vous revenez au système Python. Deux modèles sûrs :

1. Réactivez chaque session — le flux standard.

2. `uv run` / `poetry run` / `python -m project` — ne jamais activer du tout. Exécutez des commandes à partir d’un nouveau shell préfixé par l’outil. Idéal dans Makefiles, CI, npm-scripts, git hooks.

Règle pour les scripts : s'il s'agit d'une seule ligne exécutée à partir de CI ou d'un Makefile, NE PAS activer - utilisez uv run pytest ou le chemin complet .venv/bin/pytest. L'activation concerne uniquement les shells interactifs.

Migration entre outils

pip + venv → uv :

BASH
rm -rf .venv uv venv uv pip install -r requirements.txt

Requirements.txt continue de fonctionner textuellement. Deux minutes.

poésie → uv:

BASH
uvx migrate-to-uv # community tool, converts pyproject.toml

venv → poésie :

BASH
poetry init poetry add $(pip freeze | cut -d= -f1)

Vérification

Après la configuration, vérifiez toujours QUEL Python + pip vous utilisez :

BASH
$ which python /path/to/project/.venv/bin/python # ✅ venv /opt/homebrew/bin/python # ❌ system, activation didn't take $ which pip /path/to/project/.venv/bin/pip # ✅ venv $ python -c "import sys; print(sys.prefix)" /path/to/project/.venv # ✅ venv

Si « which python » affiche un chemin système après l'activation, quelque chose ne va pas – généralement vous avez activé dans un sous-shell déjà terminé.


Les environnements virtuels sont l'un des rares sujets Python pour lesquels la réponse moderne (2026) est véritablement plus simple que la réponse historique. uv pour les nouveaux projets, venv pour les scripts, pipx pour les CLI. Fait.

Prochaine étape : le piste Python DevOps couvre uv + ruff + Docker + la pile de déploiement Python moderne – pratique avec du vrai Python exécuté dans votre navigateur.

Prêt à l'essayer ?

15 cours gratuits après une inscription gratuite — pas de carte. Goûtez à la plateforme, puis décidez.

Commencez gratuitement →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.