Création d'environnements virtuels Python (venv)

Un environnement virtuel est un espace d'exécution Python isolé avec son propre interpréteur, les paquets installés et sa configuration, complètement isolé de l'environnement système.

Un environnement virtuel Python est un environnement d'exécution Python indépendant qui vous permet de créer des environnements Python isolés pour différents projets sur la même machine.

Différents projets peuvent s'exécuter en parallèle dans leurs propres environnements virtuels sans interférer les uns avec les autres.

Chaque environnement virtuel possède son propre :

  • Interpréteur Python
  • Paquets/bibliothèques installés
  • Variables d'environnement
Global installation (version conflicts) ✓ Virtual environment (completely isolated) Global Python environment site-packages (shared by all projects) Project A Needs Django 3.2 Project B Needs Django 4.0 Version conflict, cannot coexist Project A .venv Installs Django 3.2 independently Project B .venv Installs Django 4.0 independently

Les environnements virtuels donnent à chaque projet son propre espace de dépendances, éliminant complètement les conflits de versions.

Pourquoi vous avez besoin d'environnements virtuels

  • Isolation des projets: différents projets peuvent utiliser différentes versions de Python et de bibliothèques tierces
  • Éviter la pollution: les paquets installés affectent uniquement l'environnement actuel, pas le Python global
  • Contrôle des dépendances: grâce àrequirements.txtenregistrer et reproduire précisément les environnements
  • Tests sécurisés: vous pouvez mettre à niveau ou essayer de nouveaux paquets en toute sécurité sans affecter d'autres projets

Exemple de scénario :

  • Le projet A nécessite la version 3.2 de Django
  • Le projet B nécessite la version Django 4.0
  • Si elles sont installées globalement sur le système, les deux versions entreront en conflit

Outils d'environnement virtuel

Nom de l'outil Type Version de Python Méthode d'installation Fonctionnalités Scénarios applicables
venv(Recommandé) Module intégré ≥ 3.3 Aucune installation, intégré Léger, officiellement recommandé, facile à utiliser Développement général, projets quotidiens
virtualenv Outil tiers 2.x et 3.x pip install virtualenv Riche en fonctionnalités, prend en charge plusieurs versions Pour la compatibilité avec les versions plus anciennes ou les fonctionnalités avancées
conda Fourni avec Anaconda 2.x et 3.x Installé avec Anaconda/Miniconda Gestion de paquets multi-langages, écosystème de science des données Projets de science des données, d'apprentissage automatique

Pour la prise en charge des versions plus anciennes, vous pouvez utiliser virtualenv (compatible avec Python 2) :

pip install virtualenv  # 非必须,venv 通常够用

Dans ce chapitre, nous utiliseronsvenvpour créer et gérer des environnements virtuels.


Création d'un environnement virtuel

Python 3.3+ inclut levenvmodule intégré, aucune installation supplémentaire requise.

Flux de travail d'utilisation

Vue d'ensemble du flux de travail

1
Créez
python -m venv
2
Activer
activer
3
Installer les dépendances
pip install
4
Développer et déboguer
python / exécuter
5
Désactiver
deactivate
Box 1: Create (purple) Create environment python -m venv Box 2: Activate (teal) Activate source activate Box 3: Install (teal) Install dependencies pip install Box 4: Develop (teal) Develop and run python / test Box 5: Deactivate (gray) Deactivate deactivate While activated: the pip and python commands point to the virtual environment, without affecting the global environment.

Vérifiez la version de Python :

python3 --version
# 或者
python --version

Créer un environnement virtuel :

# 基本语法
python3 -m venv 环境名称

Par exemple, créez un environnement virtuel nommé.venv:

Exemple

# Se placer dans le répertoire du projet
mkdir my_project && cd my_project

# Créer l'environnement virtuel (le nommer '.venv' est une convention courante)
python3 -m venv .venv

Description des paramètres :

  • -m venv: utilisez le module venv
  • .venv: le nom de l'environnement virtuel (personnalisable)

Structure des répertoires après création

.venv/
├── bin/            # 在 Unix/Linux 系统上
│   ├── activate    # 激活脚本
│   ├── python      # 环境 Python 解释器
│   └── pip         # 环境的 pip
├── Scripts/        # 在 Windows 系统上
│   ├── activate    # 激活脚本
│   ├── python.exe  # 环境 Python 解释器
│   └── pip.exe     # 环境的 pip
└── Lib/            # 安装的第三方库

Activation de l'environnement virtuel

Après activation, les commandes python et pip du terminal actuel pointeront automatiquement vers l'environnement virtuel, et toutes les opérations d'installation sont effectuées dans l'espace isolé.

macOS / Linux

source .venv/bin/activate

Windows(CMD / PowerShell)

.venv\Scripts\activate

Après une activation réussie, l'invite de commande affiche généralement le nom de l'environnement :

(.venv) $

Vérifiez que l'activation est effective :

# 查看 Python 路径,应指向 .venv 目录
which python       # macOS/Linux
where python       # Windows
→ /path/to/my_project/.venv/bin/python

Utilisation de l'environnement virtuel

Installation des paquets

Dans un environnement activé, les paquets installés avec pip n'affectent que l'environnement actuel :

pip install package_name

Par exemple :

# 安装单个包(如Django)
(.venv) pip install django==3.2.12

# 安装多个包
(.venv) pip install requests pandas

# 安装速度慢?使用国内镜像
(.venv)  pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple

Affichage des paquets installés

(.venv) pip list
Package    Version
---------- -------
Django     3.2.12
pip        21.2.4

# 查看某个包的详情
(.venv) pip show django

# 升级包
(.venv) pip install --upgrade pip

Exportation des dépendances

L'utilisation de requirements.txt pour enregistrer et reproduire l'environnement du projet est une pratique standard pour la collaboration en équipe :

(.venv) pip freeze > requirements.txt

Exemple de contenu du fichier requirements.txt :

Django==3.2.12
requests==2.26.0
pandas==1.3.3

Installation des dépendances à partir d’un fichier

(.venv) pip install -r requirements.txt

Astuce :Ajoutez .venv/ à .gitignore et ne committez que requirements.txt. Les environnements virtuels sont volumineux et liés au chemin, ils ne doivent donc pas être inclus dans le contrôle de version.


Désactivation de l’environnement virtuel

Lorsque vous avez terminé de travailler, vous pouvez désactiver l’environnement virtuel :

deactivate

Après la désactivation, l’invite de commande redevient normale, et les commandes Python et pip utiliseront les versions globales du système.


Suppression de l’environnement virtuel

Pour supprimer un environnement virtuel, supprimez simplement son répertoire correspondant :

# 确保已退出环境
deactivate

Suppression de l’environnement virtuel

Un environnement virtuel est essentiellement un répertoire ordinaire ; la suppression du répertoire le supprime complètement :

macOS / Linux

rm -rf .venv

Windows

rmdir /s /q .venv
Remarque: Avant de supprimer, exécutezdeactivatepour désactiver l’environnement ; sinon, le shell actuel conservera des variables d’environnement non valides.

Exemple de projet concret

Supposons que vous développiez un projet Django :

Exemple

# 1. Créer et entrer dans le répertoire du projet
mkdir my_site && cd my_site

# 2. Créer et activer l'environnement virtuel
python3 -m venv .venv
source .venv/bin/activate    # Windows: .venv\Scripts\activate

# 3. Installer Django et enregistrer les dépendances
(.venv) pip install django==4.2
(.venv) pip freeze > requirements.txt

# 4. Initialiser le projet Django
(.venv) django-admin startproject config .

# 5. Exécuter les migrations de base de données et démarrer le serveur de développement
(.venv) python manage.py migrate
(.venv) python manage.py runserver

# 6. Développement terminé, désactivez l'environnement
(.venv) deactivate

Utilisation avancée

Spécification d'une version de Python

Si vous avez plusieurs versions de Python installées, vous pouvez spécifier la version à utiliser pour créer l'environnement virtuel :

python3.8 -m venv .venv  # 使用 Python 3.8

Création d'un environnement sans pip

python -m venv --without-pip .venv

Création d'un environnement virtuel héritant des paquets système

python -m venv --system-site-packages .venv

Questions fréquentes

1. Pourquoi mon environnement virtuel n'a-t-il pas de script activate ?

Assurez-vous d'utiliser le chemin correct :

  • Windows : Scripts\activate
  • Unix/Linux : bin/activate

2. Comment savoir si je suis actuellement dans un environnement virtuel ?

Vérifiez si l'invite de commande comporte un préfixe du nom de l'environnement, ou exécutez :

which python

3. L'installation des paquets est lente

Utilisez un miroir national :

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name

Vérifiez si le chemin de l'interpréteur Python se trouve dans le répertoire de l'environnement virtuel.

4. Un environnement virtuel peut-il être déplacé ?

Déconseillé. Les scripts et les fichiers de configuration à l'intérieur de l'environnement virtuel contiennent des chemins absolus codés en dur, ils deviennent donc invalides après un déplacement. Si une migration est nécessaire, la méthode la plus simple consiste à recréer l'environnement et à utiliserrequirements.txtpour restaurer les dépendances.

5. Combien d'espace un environnement virtuel occupe-t-il ?

Un environnement vide occupe environ 20–50 Mo et grandit à mesure que des paquets sont installés. Les projets de science des données (NumPy, Pandas, PyTorch) peuvent atteindre plusieurs Go. C'est une bonne habitude de nettoyer périodiquement les environnements virtuels qui ne sont plus utilisés.


Bonnes pratiques

  1. Utilisez un environnement séparé pour chaque projet: pour éviter que les dépendances de différents projets n'interfèrent les unes avec les autres
  2. Utilisez une convention de nommage unifiée :.venv: la plupart des IDE (VS Code, PyCharm) peuvent le reconnaître automatiquement
  3. Mettez à jour rapidementrequirements.txt: à chaque foispip installpuis exporter en synchronisation
  4. Ignorer les environnements virtuels dans la gestion de versions: dans.gitignoreajoutez.venv/
  5. Nettoyer périodiquement les environnements abandonnés: pour libérer de l'espace disque
  6. Épingler les numéros de version en production:requirements.txtécrire explicitement dans==versions, en évitant les mises à niveau accidentelles
# .gitignore 推荐配置
.venv/
__pycache__/
*.pyc
.env
*.egg-info/
Autres extensions