← retour aux snippets

python: créer et activer un venv proprement

Créer un environnement virtuel isolé, l'activer et gérer les dépendances en toute sécurité.


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 pip depuis un venv activé pour éviter de cibler le pip global.
  • gardez le venv dans .venv à la racine du projet et ajoutez-le à .gitignore.
  • pip freeze capture toutes les dépendances transitives; pour déclarer des contraintes plus propres, envisagez pip-tools (pip-compile) ou uv selon vos pratiques.
  • sur Windows, exécutez PowerShell en “RemoteSigned” si l’activation est bloquée (Set-ExecutionPolicy -Scope CurrentUser RemoteSigned).