Flexible und effiziente Python-Umgebungsverwaltung mit Conda und uv

Hintergrund

Python-Projekte sind vielfältig – von Datenanalyse, maschinellem Lernen bis hin zu Webentwicklung und kleinen Toolscripts. Jede Projektart stellt unterschiedliche Anforderungen an Python-Versionen, Umgebungsisolation und Abhängigkeitsmanagement. Für einfache Projekte reicht oft pip, doch mit wachsender Komplexität treten Versionskonflikte und aufgeblähte Umgebungen auf.

Beispielsweise benötigen Data-Science-Projekte oft große ML-Bibliotheken (wie TensorFlow oder PyTorch) und stabile, isolierte Umgebungen; Webentwicklung oder leichte Skripte hingegen bevorzugen schnelle, flexible Abhängigkeitsverwaltung und Python-Versionswechsel. Das klassische conda ist zwar mächtig, aber Umgebungen werden schnell mehrere GB groß und damit zu schwergewichtig. Daher habe ich mein Management optimiert und setze nun auf die Kombination aus Conda und uv anstelle von conda-pyenv-poetry, um effizientere und schlankere Python-Umgebungen zu erreichen.

Meine Ziele sind:

  • Conda:Bereitstellung isolierter, schwergewichtiger virtueller Umgebungen für Data-Science- und ML-Projekte, wobei ähnliche Projekte Umgebungen teilen können, um Speicherplatz zu sparen
  • uv:Schnelle, unabhängige virtuelle Umgebungen für Alltagsprojekte, mit flexibler Python-Versionsverwaltung und Abhängigkeits-Locking

Conda

Conda ist ein Open-Source-Paket- und Umgebungsmanager, ursprünglich für Python-Data-Science-Projekte entwickelt, unterstützt aber mittlerweile viele Sprachen (z.B. R, Node.js, Java). Entwickelt von Anaconda, ist es weit verbreitet in Data Science, Machine Learning und wissenschaftlichem Rechnen.

  • Virtuelle UmgebungsisolationConda erstellt vollständig isolierte Umgebungen und verhindert Abhängigkeitskonflikte – ideal für komplexe wissenschaftliche Bibliotheken
  • Automatische Abhängigkeitsauflösung:Stärker als bei pip
  • Mehrsprachige Unterstützung:Nicht nur Python, sondern auch R, Julia usw.

Installation und Konfiguration

Empfohlen wird Miniforge,eine leichtgewichtige Conda-Distribution für den conda-forge-Kanal,mit folgenden Vorteilen:

  • Standardmäßig Nutzung des Community-gepflegten conda-forge-Repos,das mehr und aktuellere Pakete bietet als der Standardkanal。
  • Enthält mamba,einen schnelleren Conda-Ersatz für Paketauflösung und Installation。

Optimierte Konfiguration

# Automatisches Aktivieren der base-Umgebung deaktivieren,um andere Python-Umgebungen nicht zu stören
conda config --set auto_activate_base false

# Conda-Installation prüfen:
conda --version
mamba --version

Hinweis:Unter Windows sollte der PATH von Conda eine niedrigere Priorität haben als der von uv,um Versionskonflikte zu vermeiden。Passe ggf. die Reihenfolge in den Systemeinstellungen an,sodass der uv-Pfad vor Conda steht。

uv

uv ist ein moderner Python-Paketmanager in Rust,der Python-Versionsmanagement,virtuelle Umgebungen und Abhängigkeitsverwaltung integriert – deutlich schneller als Pyenv oder Poetry。Die wichtigsten Vorteile:

  • 🚀 Ein Tool ersetzt pip,pip-tools,pipx,poetry,pyenv,twine,virtualenv und mehr
  • ⚡️ 10–100x schneller als pip
  • 🗂️ Umfassendes Projektmanagement mit universellen Lockfiles
  • ❇️ Skriptausführung mit Inline-Abhängigkeitsmetadaten
  • 🐍 Installation und Verwaltung von Python-Versionen
  • 🛠️ Ausführen und Installieren von Tools,die als Python-Pakete veröffentlicht sind
  • 🔩 pip-kompatibles Interface für vertraute CLI und bessere Performance
  • 🏢 Cargo-ähnliche Workspaces für skalierbare Projekte
  • 💾 Platzsparend durch globalen Cache und Abhängigkeits-Deduplizierung
  • ⏬ Installation via curl oder pip,ohne Rust oder Python vorauszusetzen
  • 🖥️ Unterstützt macOS,Linux und Windows

Installation und Konfiguration

UV installieren

  • Unter Windows mit PowerShell:

    Invoke-WebRequest -Uri "https://astral.sh/uv/install.ps1" -OutFile "install.ps1"; .\install.ps1
    
  • Unter Ubuntu oder anderen Linux-Systemen:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  • Installation prüfen:

    uv --version
    

UV konfigurieren

  • Globale Python-Version festlegen:

    uv python install 3.11  # Installiert Python 3.11
    uv python pin 3.11      # Setzt globale Standardversion
    
  • Projektspezifische Python-Version festlegen:

    cd my-project
    uv python pin 3.10      # Projekt nutzt Python 3.10
    

    Dadurch wird im Projektverzeichnis eine .python-version-Datei mit der Version angelegt。

  • Virtuelle Umgebung erstellen und Abhängigkeiten verwalten:

    uv venv                    # Erstellt virtuelle Umgebung
    uv add numpy pandas        # Abhängigkeiten hinzufügen
    uv sync                    # Synchronisiert Abhängigkeiten in die Umgebung
    

    Die Abhängigkeiten werden in pyproject.toml und uv.lock gespeichert,was Konsistenz garantiert。

  • Projektumgebung prüfen:

    uv run python -c "import sys; print(sys.executable)"
    

    Die Ausgabe sollte auf das Python der Projektumgebung zeigen,z.B. .../my-project/.venv/Scripts/python.exe(Windows)。

  • Projekt mit UV bauen und auf PyPI veröffentlichen:

    uv build
    uv publish
    
  • Eigene uv-Konfiguration (uv.toml),z.B. für eigenen Cache-Ordner oder pip-Index-URL,durch Anlegen einer uv.toml-Datei。Diese kann global (z.B. unter Linux/Mac: ~/.config/uv/uv.toml oder Windows: %APPDATA%\uv\uv.toml) oder projektspezifisch im Projektverzeichnis liegen。

    cache-dir = "/Volumes/Work/Temporary/uv_cache"
    
    [[index]]
    url = "https://pypi.tuna.tsinghua.edu.cn/simple"
    default = true
    

Diese Seite wurde automatisch von generativer KI übersetzt und kann Ungenauigkeiten oder unvollständige Informationen enthalten. Feedback ist willkommen, um uns bei der Verbesserung zu helfen.




    Hat Ihnen dieser Artikel gefallen?

    Hier sind weitere Artikel, die Sie interessieren könnten:

  • macOS Systemkonfigurationsprotokoll
  • Praktische Konfiguration für leistungsschwache Cloud-Server
  • „Essay“ Erinnerungen an das alte Zuhause
  • „Essay“ Der erste Tag im Jahr 2025 – Ein paar Gedanken
  • Jahresrückblick 2024