Skip to main content

Python - Environnements Virtuels

🐍 Python venv - Environnements Virtuels

📋 Table des Matiùres


Introduction

venv est un module Python intégré qui permet de créer des environnements virtuels isolés. Il est inclus par défaut dans Python 3.3 et versions ultérieures.

Pourquoi utiliser venv ?

Avantages

  • ✅ Isolation des dĂ©pendances : Chaque projet a ses propres packages
  • ✅ Évite les conflits de versions : Python 2 vs Python 3, diffĂ©rentes versions de packages
  • ✅ ReproductibilitĂ© : Facilite le partage et le dĂ©ploiement
  • ✅ Pas de pollution globale : Installation systĂšme reste propre
  • ✅ Gestion de permissions : Pas besoin de sudo pour installer des packages

Cas d'usage

Projet A : Django 3.2 + Python 3.8
Projet B : Django 4.2 + Python 3.11
→ Sans venv, impossible d'avoir les deux versions simultanĂ©ment

Installation

Vérifier si venv est disponible

python3 --version
python3 -m venv --help

Installation si nécessaire

Ubuntu/Debian

sudo apt update
sudo apt install python3-venv

Fedora/RHEL/CentOS

sudo dnf install python3-virtualenv
# ou
sudo yum install python3-virtualenv

macOS

# venv est inclus avec Python 3
# Si besoin, installer via Homebrew
brew install python3

Windows

# venv est inclus avec Python 3
# Télécharger depuis python.org si nécessaire

Création d'un environnement virtuel

Syntaxe de base

python3 -m venv <nom_environnement>

Exemples pratiques

# Créer un environnement nommé "venv"
python3 -m venv venv

# Créer un environnement nommé "myenv"
python3 -m venv myenv

# Créer avec une version spécifique de Python
python3.11 -m venv venv311

# Créer dans un dossier spécifique
python3 -m venv /chemin/vers/mon_projet/venv

Options avancées

# Sans pip (installer manuellement plus tard)
python3 -m venv --without-pip venv

# Avec accĂšs aux packages systĂšme
python3 -m venv --system-site-packages venv

# Mise Ă  niveau des packages de base
python3 -m venv --upgrade venv

# Avec des prompts personnalisés
python3 -m venv --prompt="MonProjet" venv

Activation et Désactivation

Linux / macOS

Activation

# Bash/Zsh
source venv/bin/activate

# Fish
source venv/bin/activate.fish

# Csh
source venv/bin/activate.csh

Vérification

# Le prompt change pour indiquer l'environnement actif
(venv) user@machine:~/project$

# Vérifier le chemin Python
which python
# Output: /chemin/vers/projet/venv/bin/python

Désactivation

deactivate

Windows

Activation

# PowerShell
.\venv\Scripts\Activate.ps1

# CMD
.\venv\Scripts\activate.bat

Si erreur de politique d'exécution (PowerShell)

# Autoriser temporairement
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

# Puis activer
.\venv\Scripts\Activate.ps1

Désactivation

deactivate

Gestion des dépendances

Installer des packages

# Activer l'environnement d'abord
source venv/bin/activate

# Installer un package
pip install requests

# Installer une version spécifique
pip install django==4.2.0

# Installer plusieurs packages
pip install flask sqlalchemy pandas

Fichier requirements.txt

Créer un fichier requirements.txt

# Exporter les dépendances installées
pip freeze > requirements.txt

Exemple de requirements.txt

Django==4.2.7
requests==2.31.0
python-dotenv==1.0.0
psycopg2-binary==2.9.9
celery==5.3.4

Installer depuis requirements.txt

pip install -r requirements.txt

Mise Ă  jour des packages

# Mettre Ă  jour un package
pip install --upgrade requests

# Mettre Ă  jour tous les packages
pip list --outdated
pip install --upgrade <package_name>

Bonnes pratiques

1. Nommage de l'environnement

# Recommandé : utiliser "venv" ou ".venv"
python3 -m venv venv
python3 -m venv .venv  # Caché sur Linux/macOS

2. Fichier .gitignore

Toujours exclure venv de Git !

# .gitignore
venv/
.venv/
env/
ENV/
*.pyc
__pycache__/
.env

3. Documentation du projet

README.md

## Installation

1. Créer l'environnement virtuel
   ```bash
   python3 -m venv venv
  1. Activer l'environnement

    source venv/bin/activate  # Linux/macOS
    .\venv\Scripts\activate   # Windows
    
  2. Installer les dépendances

    pip install -r requirements.txt
    

### 4. Structure de projet recommandée

mon_projet/ ├── venv/ # Environnement virtuel (non versionnĂ©) ├── src/ # Code source │ └── main.py ├── tests/ # Tests ├── requirements.txt # DĂ©pendances ├── .gitignore ├── .env.example # Template de variables d'environnement └── README.md


### 5. Gestion de plusieurs environnements

```bash
# Développement
python3 -m venv venv-dev
pip install -r requirements-dev.txt

# Production
python3 -m venv venv-prod
pip install -r requirements.txt

# Tests
python3 -m venv venv-test
pip install -r requirements-test.txt

6. Scripts d'automatisation

setup.sh (Linux/macOS)

#!/bin/bash
echo "🐍 Configuration de l'environnement Python..."

# Créer venv
python3 -m venv venv

# Activer
source venv/bin/activate

# Installer dépendances
pip install --upgrade pip
pip install -r requirements.txt

echo "✅ Environnement prĂȘt !"

setup.ps1 (Windows)

Write-Host "🐍 Configuration de l'environnement Python..." -ForegroundColor Green

# Créer venv
python -m venv venv

# Activer
.\venv\Scripts\Activate.ps1

# Installer dépendances
pip install --upgrade pip
pip install -r requirements.txt

Write-Host "✅ Environnement prĂȘt !" -ForegroundColor Green

Commandes utiles

Informations sur l'environnement

# Version de Python utilisée
python --version

# Chemin de l'exécutable Python
which python     # Linux/macOS
where python     # Windows

# Liste des packages installés
pip list

# Détails d'un package
pip show django

# Packages obsolĂštes
pip list --outdated

# Vérifier les dépendances
pip check

Nettoyage et maintenance

# Désinstaller un package
pip uninstall requests

# Désinstaller tous les packages
pip freeze | xargs pip uninstall -y

# Nettoyer le cache pip
pip cache purge

# Supprimer l'environnement
deactivate
rm -rf venv  # Linux/macOS
rmdir /s venv  # Windows

Export et import

# Export avec hashes pour la sécurité
pip freeze --all > requirements-full.txt

# Export seulement les dépendances principales
pip list --not-required --format=freeze > requirements.txt

# Import avec vérification des hashes
pip install --require-hashes -r requirements.txt

Troubleshooting

ProblĂšme : venv n'est pas reconnu

Solution Ubuntu/Debian

sudo apt install python3-venv

ProblĂšme : Permission denied lors de l'activation (Windows)

Solution PowerShell

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

ProblĂšme : pip n'est pas disponible dans venv

Solution

# Réinstaller pip dans le venv
python -m ensurepip --upgrade
# ou
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

ProblĂšme : Mauvaise version de Python dans venv

Solution

# Spécifier la version lors de la création
python3.11 -m venv venv

# Ou utiliser pyenv pour gérer plusieurs versions
pyenv local 3.11.0
python -m venv venv

ProblĂšme : venv trop volumineux

Solution

# Ne pas inclure les packages systĂšme
python3 -m venv --without-pip venv

# Nettoyer le cache
pip cache purge

# Utiliser des alternatives légÚres
pip install pipdeptree  # Analyser les dépendances

ProblÚme : Conflits de dépendances

Solution

# Utiliser pip-tools pour gérer les dépendances
pip install pip-tools

# Créer requirements.in
echo "django>=4.0" > requirements.in

# Compiler les dépendances
pip-compile requirements.in

# Installer
pip-sync requirements.txt

Alternatives Ă  venv

virtualenv

Plus ancien, plus de fonctionnalités

pip install virtualenv
virtualenv venv

conda

Gestion de Python et packages non-Python

conda create -n myenv python=3.11
conda activate myenv

pipenv

Combine pip et virtualenv

pip install pipenv
pipenv install django
pipenv shell

poetry

Gestion moderne des dépendances

curl -sSL https://install.python-poetry.org | python3 -
poetry new mon_projet
poetry add django

Ressources


⬆ Retour en haut