Python - Environnements Virtuels
đ Python venv - Environnements Virtuels
đ Table des MatiĂšres
- Introduction
- Pourquoi utiliser venv ?
- Installation
- Création d'un environnement virtuel
- Activation et Désactivation
- Gestion des dépendances
- Bonnes pratiques
- Commandes utiles
- Troubleshooting
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
-
Activer l'environnement
source venv/bin/activate # Linux/macOS .\venv\Scripts\activate # Windows -
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
No comments to display
No comments to display