objectif
Isoler les dépendances d’un projet Python avec un environnement virtuel, éviter les conflits système et figer des versions reproductibles.
code minimal
# créer un venv et l'activer (Linux/macOS)
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
utilisation
# initialiser un projet et installer des deps
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
pip install requests flask
# figer les versions dans requirements.txt
pip freeze --exclude-editable > requirements.txt
# réinstaller à l'identique sur une autre machine
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
# désactiver l'environnement
deactivate
variante(s) utile(s)
# Windows (PowerShell)
py -3 -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
# forcer une version de Python spécifique (si plusieurs versions installées)
python3.11 -m venv .venv
# activer automatiquement via direnv (si disponible)
echo "layout python python3" > .envrc
direnv allow
# isoler la config de pip (cache + no input en CI)
export PIP_CACHE_DIR="$PWD/.pip-cache"
pip install --no-input -r requirements.txt
# installer en mode editable un paquet local
pip install -e .
notes
- utilisez toujours
python -m pipdepuis un venv activé pour éviter de cibler le pip global. - gardez le venv dans
.venvà la racine du projet et ajoutez-le à.gitignore. pip freezecapture toutes les dépendances transitives; pour déclarer des contraintes plus propres, envisagezpip-tools(pip-compile) ouuvselon vos pratiques.- sur Windows, exécutez PowerShell en “RemoteSigned” si l’activation est bloquée (
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned).