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
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

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: durchrequirements.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

1
Erstelle
python -m venv
2
Aktivieren
aktivieren
3
Abhängigkeiten installieren
pip install
4
Entwickeln und Debuggen
python / run
5
Deaktivieren
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.

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

# In das Projektverzeichnis wechseln
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
Hinweis: Führen Sie vor dem Löschendeactivatedie 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

# 1. Projektverzeichnis erstellen und betreten
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

  1. Verwenden Sie für jedes Projekt eine separate Umgebung: um zu vermeiden, dass sich Abhängigkeiten verschiedener Projekte gegenseitig beeinflussen
  2. Verwenden Sie eine einheitliche Namenskonvention:.venv: Die meisten IDEs (VS Code, PyCharm) können es automatisch erkennen
  3. Zeitnah aktualisierenrequirements.txt: jedes Malpip installdann synchron exportieren
  4. Virtuelle Umgebungen in der Versionskontrolle ignorieren: in.gitignorehinzufügen.venv/
  5. Verwaiste Umgebungen regelmäßig bereinigen: um Speicherplatz freizugeben
  6. Versionsnummern in der Produktion fixieren:requirements.txtexplizit angeben in==Versionen, um versehentliche Upgrades zu vermeiden
# .gitignore 推荐配置
.venv/
__pycache__/
*.pyc
.env
*.egg-info/
Andere Erweiterungen