venv, uv et pixi#
Le module emploie conda pour tous ses environnements, parce qu’il est installé sur les postes de la salle, et qu’il installe aussi des programmes qui ne sont pas du Python. Cette page décrit trois autres outils qu’on rencontre dans les projets Python, pour qui veut les essayer sur un ordinateur personnel.
venv#
venv fait partie de Python : il crée un environnement qui réutilise le
Python qui l’a créé, et y installe des paquets avec pip, depuis PyPI.
Dans le dossier d’un projet :
python -m venv .venv
.venv\Scripts\activate.bat
pip install pandas
Sous macOS et Linux, la deuxième ligne est source .venv/bin/activate.
L’invite prend (.venv) en tête. Le dossier .venv contient tout
l’environnement, et se supprime comme un dossier ordinaire.
VS Code trouve un venv placé à la racine du dossier ouvert, sous n’importe quel nom, et le propose dans « Select Interpreter » avec le type Workspace (Comment VS Code gère les environnements). Un venv placé ailleurs se choisit par « Enter interpreter path… ».
uv#
uv (Astral) fait la même chose que venv et pip, plus vite, et sait aussi télécharger un Python. C’est un programme à part, qui s’installe sans droits d’administrateur, au choix :
conda install -c conda-forge uvdans un environnement conda ;pip install uvdans un environnement existant ;l’installateur d’Astral (https://docs.astral.sh/uv/), qui le pose dans
C:\Users\<nom>\.local\bin.
Il a besoin du réseau : les paquets viennent de PyPI, et les Python
qu’il télécharge de GitHub. Son cache est dans
C:\Users\<nom>\AppData\Local\uv\cache, ses Python dans
C:\Users\<nom>\AppData\Roaming\uv\python.
Usage minimal, dans le dossier d’un projet :
uv venv
uv pip install pandas
uv venv crée .venv avec le premier Python trouvé ; --python 3.13
demande une version (téléchargée si besoin), et
--python C:\ProgramData\anaconda3\python.exe réutilise celui d’Anaconda.
L’environnement s’active comme un venv ordinaire.
Mode projet, qui décrit l’environnement dans des fichiers :
uv init
uv add pandas
uv run script.py
uv init crée pyproject.toml ; uv add y inscrit le paquet, met à
jour uv.lock (les versions exactes) et l’installe dans .venv ; uv run exécute avec cet environnement, en le recréant s’il manque. Quelqu’un
qui reçoit le projet tape uv sync et obtient le même environnement.
Côté VS Code, rien à configurer : le .venv est trouvé comme tout venv.
Avec l’extension Python Environments, python-envs.alwaysUseUv (vrai par
défaut) fait que « Create Environment » passe par uv venv dès qu’uv est
dans le PATH.
pixi#
pixi (prefix.dev) installe les mêmes paquets que conda, depuis conda-forge par défaut, donc aussi des programmes qui ne sont pas du Python, comme pandoc ou ffmpeg. Il décrit l’environnement dans un fichier du projet, à la façon d’uv. pixi est un programme à part, qui s’installe sans droits d’administrateur. Sous Windows, dans un PowerShell :
powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex"
Sous macOS et Linux, dans le Terminal :
curl -fsSL https://pixi.sh/install.sh | sh
Fermer puis rouvrir le terminal. Usage minimal, dans le dossier d’un projet :
pixi init
pixi add python pandoc
pixi run python script.py
pixi init crée pixi.toml, qui décrit le projet ; pixi add y inscrit
les paquets, met à jour pixi.lock (les versions exactes) et les installe
dans le dossier .pixi du projet ; pixi run exécute une commande dans
cet environnement. pixi shell ouvre un terminal où l’environnement est
activé. Quelqu’un qui reçoit le projet tape pixi install et obtient le
même environnement.
Lequel choisir#
conda |
venv |
uv |
pixi |
|
|---|---|---|---|---|
Paquets |
conda-forge : Python et autres programmes |
PyPI : Python seulement |
PyPI : Python seulement |
conda-forge, et PyPI en plus |
Où est l’environnement |
un dossier par environnement, dans |
|
|
|
Fichier qui le décrit |
|
|
|
|
Installe un Python |
oui |
non, il réutilise celui qui le lance |
oui |
oui |
conda installe des paquets qui ne sont pas du Python (pandoc, ffmpeg,
ImageMagick, typst), et c’est la raison du choix du module. venv et uv ne
connaissent que PyPI, donc que des paquets Python et les bibliothèques
qu’ils embarquent. En échange, ils sont plus rapides, et pyproject.toml
est le format que la plupart des projets Python publient.
Pour un projet personnel, hors des contraintes des postes de la salle, uv convient quand tous les paquets sont sur PyPI, et pixi quand il faut aussi des programmes de conda-forge. Tous deux recréent l’environnement à l’identique depuis les fichiers du projet.