pyenv — Python-Versionen verwalten
Praxis-Guide zu pyenv – mehrere Python-Versionen parallel installieren, pro Shell oder Projekt umschalten und bei Bedarf aus Quellcode bauen.
pyenv ist ein Versions-Manager für Python: Damit installierst du mehrere Python-Versionen parallel und schaltest pro Shell, pro Projekt oder global zwischen ihnen um. Eine Datei namens .python-version im Projektverzeichnis legt fest, welche Version dort automatisch gilt – pyenv schiebt dafür sogenannte Shims in deinen PATH, die jeden Aufruf von python, pip & Co. an die richtige Version weiterreichen. Die gewünschten Versionen baut pyenv bei Bedarf direkt aus dem Quellcode, sodass du nicht auf die Pakete deiner Distribution angewiesen bist. Dieser Guide zeigt dir die wichtigsten Befehle – vom Installieren einer Version bis zu virtuellen Umgebungen mit pyenv-virtualenv.
Installieren & Versionen auflisten
pyenv install <version> — Installiert eine Python-Version.
pyenv install 3.12.2pyenv install --list — Listet alle installierbaren Versionen auf.
pyenv install --listpyenv install --list | grep '^ *3\.' — Listet verfügbare CPython-3.x-Versionen auf.
pyenv install --list | grep '^ *3\.'pyenv versions — Listet alle installierten Versionen auf (markiert die aktive mit *).
pyenv versionspyenv uninstall <version> — Deinstalliert eine Python-Version.
pyenv uninstall 3.11.0Versionen umschalten
pyenv global <version> — Legt die globale Standard-Python-Version fest.
pyenv global 3.12.2pyenv global <version1> <version2> — Legt mehrere globale Versionen fest (die erste ist Standard, die übrigen dienen als Fallback).
pyenv global 3.12.2 3.11.8pyenv local <version> — Setzt die Python-Version für das aktuelle Verzeichnis (erzeugt .python-version).
pyenv local 3.11.8pyenv shell <version> — Setzt die Python-Version nur für die aktuelle Shell-Sitzung.
pyenv shell 3.10.13pyenv shell --unset — Hebt die Versions-Überschreibung auf Shell-Ebene auf.
pyenv shell --unsetpyenv version — Zeigt die aktuell aktive Python-Version und wie sie gesetzt wurde.
pyenv versionInfos & Kommandos
pyenv which <command> — Zeigt den vollständigen Pfad eines Kommandos für die aktive Version.
pyenv which pythonpyenv whence <command> — Listet die Versionen auf, die ein bestimmtes Kommando bereitstellen.
pyenv whence pippyenv commands — Listet alle verfügbaren pyenv-Kommandos auf.
pyenv commandspyenv root — Zeigt das pyenv-Wurzelverzeichnis.
pyenv rootpyenv prefix <version> — Zeigt den Installationspfad einer bestimmten Version.
pyenv prefix 3.12.2pyenv-virtualenv
pyenv virtualenv <version> <name> — Erstellt eine virtuelle Umgebung mit einer bestimmten Python-Version.
pyenv virtualenv 3.12.2 myproject-envpyenv virtualenvs — Listet alle virtuellen Umgebungen auf.
pyenv virtualenvspyenv activate <name> — Aktiviert eine virtuelle Umgebung.
pyenv activate myproject-envpyenv deactivate — Deaktiviert die aktuelle virtuelle Umgebung.
pyenv deactivatepyenv local <virtualenv-name> — Aktiviert eine virtuelle Umgebung automatisch beim Betreten eines Verzeichnisses.
pyenv local myproject-envpyenv virtualenv-delete <name> — Löscht eine virtuelle Umgebung.
pyenv virtualenv-delete myproject-envWartung
pyenv rehash — Baut die Shim-Binaries neu auf (nach dem Installieren von Paketen mit ausführbaren Dateien ausführen).
pyenv rehashpyenv update — Aktualisiert pyenv und alle installierten Plugins (über das pyenv-update-Plugin).
pyenv updatepyenv doctor — Prüft die pyenv-Installation auf mögliche Probleme.
pyenv doctor Fazit
pyenv nimmt dir den Streit mit dem System-Python ab: Statt an der distributionseigenen Version herumzuschrauben, hältst du beliebig viele Versionen nebeneinander und bestimmst pro Projekt punktgenau, welche zum Einsatz kommt. Damit das funktioniert, muss die Shell-Initialisierung sitzen – eval "$(pyenv init -)" gehört in deine .bashrc bzw. .zshrc, sonst greifen die Shims nicht. Weil pyenv die Versionen aus dem Quellcode kompiliert, brauchst du vorab die passenden Build-Abhängigkeiten (etwa build-essential, libssl-dev und zlib1g-dev); fehlen sie, bricht pyenv install ab. Für isolierte Projektumgebungen kombinierst du pyenv am besten mit dem Plugin pyenv-virtualenv, das virtuelle Umgebungen sauber an eine .python-version koppelt.
Weiterführende Links
- pyenv – GitHub-Projekt – Quellcode, Installation und vollständige Befehlsreferenz (englisch)
- pyenv-virtualenv – Plugin für virtuelle Umgebungen rund um pyenv (englisch)
- Suggested build environment – Liste der nötigen Build-Abhängigkeiten je Betriebssystem (englisch)