Erstellen virtueller Python-Umgebungen (venv)
Eine virtuelle Umgebung ist ein isolierter Python-Laufzeitbereich mit eigenem Interpreter, installierten Paketen und eigener Konfiguration, vollständig isoliert von der systemweiten Umgebung.
Eine virtuelle Python-Umgebung ist eine unabhängige Python-Laufzeitumgebung, mit der Sie isolierte Python-Umgebungen für verschiedene Projekte auf derselben Maschine erstellen können.
Verschiedene Projekte können parallel in ihren eigenen virtuellen Umgebungen ausgeführt werden, ohne sich gegenseitig zu beeinträchtigen.
Jede virtuelle Umgebung hat ihre eigenen:
- Python-Interpreter
- Installierte Pakete/Bibliotheken
- Umgebungsvariablen
Virtuelle Umgebungen geben jedem Projekt seinen eigenen Abhängigkeitsbereich und beseitigen Versionskonflikte vollständig.
Warum Sie virtuelle Umgebungen brauchen
- Projektisolierung: verschiedene Projekte können unterschiedliche Versionen von Python und Drittanbieter-Bibliotheken verwenden
- Vermeidung von Verschmutzung: installierte Pakete betreffen nur die aktuelle Umgebung, nicht das globale Python
- Abhängigkeitskontrolle: durch
requirements.txtpräzise Aufzeichnung und Reproduktion von Umgebungen - Sicheres Testen: Sie können Pakete sicher aktualisieren oder ausprobieren, ohne andere Projekte zu beeinträchtigen
Beispielszenario:
- Projekt A benötigt Django in Version 3.2
- Projekt B benötigt die Django-Version 4.0
- Wenn sie global auf dem System installiert sind, geraten die beiden Versionen in Konflikt
Werkzeuge für virtuelle Umgebungen
| Tool-Name | Type | Unterstützte Python-Versionen | Installationsmethode | Funktionen | Anwendbare Szenarien |
|---|---|---|---|---|---|
| venv(Empfohlen) | Eingebautes Modul | ≥ 3.3 | Keine Installation erforderlich, eingebaut | Leichtgewichtig, offiziell empfohlen, einfach zu bedienen | Allgemeine Entwicklung, alltägliche Projekte |
| virtualenv | Drittanbieter-Tool | 2.x und 3.x | pip install virtualenv |
Funktionsreich, unterstützt mehrere Versionen | Für Kompatibilität mit älteren Versionen oder erweiterten Funktionen |
| conda | Wird mit Anaconda geliefert | 2.x und 3.x | Mit Anaconda/Miniconda installiert | Sprachübergreifende Paketverwaltung, Data-Science-Ökosystem | Data-Science- und Machine-Learning-Projekte |
Für die Unterstützung älterer Versionen können Sie virtualenv verwenden (Python 2-kompatibel):
pip install virtualenv # 非必须,venv 通常够用
In diesem Kapitel verwenden wirvenvzum Erstellen und Verwalten virtueller Umgebungen.
Erstellen einer virtuellen Umgebung
Python 3.3+ enthält das integriertevenvModul, keine zusätzliche Installation erforderlich.
Nutzungsworkflow
Workflow-Überblick
Prüfen Sie die Python-Version:
python3 --version # 或者 python --version
Virtuelle Umgebung erstellen:
# 基本语法 python3 -m venv 环境名称
Erstellen Sie zum Beispiel eine virtuelle Umgebung mit dem Namen.venv:
Beispiel
mkdir my_project && cd my_project
# Virtuelle Umgebung erstellen (die Benennung '.venv' ist eine gängige Konvention)
python3 -m venv .venv
Parameterbeschreibungen:
-m venv: das venv-Modul verwenden.venv: der Name der virtuellen Umgebung (kann angepasst werden)
Verzeichnisstruktur nach der Erstellung
.venv/ ├── bin/ # 在 Unix/Linux 系统上 │ ├── activate # 激活脚本 │ ├── python # 环境 Python 解释器 │ └── pip # 环境的 pip ├── Scripts/ # 在 Windows 系统上 │ ├── activate # 激活脚本 │ ├── python.exe # 环境 Python 解释器 │ └── pip.exe # 环境的 pip └── Lib/ # 安装的第三方库
Aktivieren der virtuellen Umgebung
Nach der Aktivierung zeigen die Befehle python und pip im aktuellen Terminal automatisch auf die virtuelle Umgebung, und alle Installationsvorgänge werden im isolierten Bereich ausgeführt.
macOS / Linux
source .venv/bin/activate
Windows(CMD / PowerShell)
.venv\Scripts\activate
Nach erfolgreicher Aktivierung zeigt die Eingabeaufforderung normalerweise den Namen der Umgebung an:
(.venv) $
Überprüfen, ob die Aktivierung wirksam ist:
# 查看 Python 路径,应指向 .venv 目录 which python # macOS/Linux where python # Windows → /path/to/my_project/.venv/bin/python
Verwenden der virtuellen Umgebung
Installieren von Paketen
In einer aktivierten Umgebung wirken sich mit pip installierte Pakete nur auf die aktuelle Umgebung aus:
pip install package_name
Zum Beispiel:
# 安装单个包(如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
Anzeigen installierter Pakete
(.venv) pip list Package Version ---------- ------- Django 3.2.12 pip 21.2.4 # 查看某个包的详情 (.venv) pip show django # 升级包 (.venv) pip install --upgrade pip
Exportieren von Abhängigkeiten
Die Verwendung von requirements.txt zum Aufzeichnen und Reproduzieren der Projektumgebung ist eine Standardpraxis für die Teamzusammenarbeit:
(.venv) pip freeze > requirements.txt
Beispielinhalt der Datei requirements.txt:
Django==3.2.12 requests==2.26.0 pandas==1.3.3
Abhängigkeiten aus einer Datei installieren
(.venv) pip install -r requirements.txt
Tipp:Fügen Sie .venv/ zu .gitignore hinzu und committen Sie nur requirements.txt. Virtuelle Umgebungen sind groß und pfadgebunden, daher sollten sie nicht in die Versionskontrolle aufgenommen werden.
Deaktivieren der virtuellen Umgebung
Wenn Sie mit der Arbeit fertig sind, können Sie die virtuelle Umgebung deaktivieren:
deactivate
Nach der Deaktivierung kehrt die Eingabeaufforderung wieder zum Normalzustand zurück, und die Befehle Python und pip verwenden die systemweiten Versionen.
Löschen der virtuellen Umgebung
Um eine virtuelle Umgebung zu löschen, löschen Sie einfach das zugehörige Verzeichnis:
# 确保已退出环境 deactivate
Löschen der virtuellen Umgebung
Eine virtuelle Umgebung ist im Wesentlichen ein gewöhnliches Verzeichnis; durch Löschen des Verzeichnisses wird sie vollständig entfernt:
macOS / Linux
rm -rf .venv
Windows
rmdir /s /q .venv
deactivatedie Deaktivierung der Umgebung aus; andernfalls behält die aktuelle Shell ungültige Umgebungsvariablen bei.Praxisbeispiel für ein reales Projekt
Angenommen, Sie entwickeln ein Django-Projekt:
Beispiel
mkdir my_site && cd my_site
# 2. Virtuelle Umgebung erstellen und aktivieren
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 3. Django installieren und Abhängigkeiten festhalten
(.venv) pip install django==4.2
(.venv) pip freeze > requirements.txt
# 4. Django-Projekt initialisieren
(.venv) django-admin startproject config .
# 5. Datenbankmigrationen ausführen und den Entwicklungsserver starten
(.venv) python manage.py migrate
(.venv) python manage.py runserver
# 6. Entwicklung abgeschlossen, Umgebung deaktivieren
(.venv) deactivate
Erweiterte Nutzung
Angeben einer Python-Version
Wenn Sie mehrere Python-Versionen installiert haben, können Sie angeben, welche Version zum Erstellen der virtuellen Umgebung verwendet werden soll:
python3.8 -m venv .venv # 使用 Python 3.8
Erstellen einer Umgebung ohne pip
python -m venv --without-pip .venv
Erstellen einer virtuellen Umgebung, die Systempakete erbt
python -m venv --system-site-packages .venv
Häufig gestellte Fragen
1. Warum hat meine virtuelle Umgebung kein activate-Skript?
Stellen Sie sicher, dass Sie den richtigen Pfad verwenden:
- Windows:
Scripts\activate - Unix/Linux:
bin/activate
2. Wie erkenne ich, ob ich mich gerade in einer virtuellen Umgebung befinde?
Prüfen Sie, ob die Befehlszeilenaufforderung ein Präfix mit dem Umgebungsnamen enthält, oder führen Sie aus:
which python
3. Die Installation von Paketen ist langsam
Verwenden Sie eine inländische Mirror-Quelle:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name
Prüfen Sie, ob der Pfad des Python-Interpreters innerhalb des Verzeichnisses der virtuellen Umgebung liegt.
4. Kann eine virtuelle Umgebung verschoben werden?
Nicht empfohlen. Die Skripte und Konfigurationsdateien innerhalb der virtuellen Umgebung enthalten hartcodierte absolute Pfade, daher werden sie nach dem Verschieben ungültig. Wenn eine Migration erforderlich ist, ist der einfachste Weg, die Umgebung neu zu erstellen und zu verwenden,requirements.txtum Abhängigkeiten wiederherzustellen.
5. Wie viel Speicherplatz nimmt eine virtuelle Umgebung ein?
Eine leere Umgebung belegt etwa 20–50 MB und wächst mit der Anzahl installierter Pakete. Data-Science-Projekte (NumPy, Pandas, PyTorch) können mehrere GB erreichen. Es ist eine gute Angewohnheit, regelmäßig virtuelle Umgebungen zu bereinigen, die nicht mehr verwendet werden.
Best Practices
- Verwenden Sie für jedes Projekt eine separate Umgebung: um zu vermeiden, dass sich Abhängigkeiten verschiedener Projekte gegenseitig beeinflussen
- Verwenden Sie eine einheitliche Namenskonvention:
.venv: Die meisten IDEs (VS Code, PyCharm) können es automatisch erkennen - Zeitnah aktualisieren
requirements.txt: jedes Malpip installdann synchron exportieren - Virtuelle Umgebungen in der Versionskontrolle ignorieren: in
.gitignorehinzufügen.venv/ - Verwaiste Umgebungen regelmäßig bereinigen: um Speicherplatz freizugeben
- Versionsnummern in der Produktion fixieren:
requirements.txtexplizit angeben in==Versionen, um versehentliche Upgrades zu vermeiden
# .gitignore 推荐配置 .venv/ __pycache__/ *.pyc .env *.egg-info/Andere Erweiterungen