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

pyenv install --list — Listet alle installierbaren Versionen auf.

pyenv install --list

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

pyenv uninstall <version> — Deinstalliert eine Python-Version.

pyenv uninstall 3.11.0

Versionen umschalten

pyenv global <version> — Legt die globale Standard-Python-Version fest.

pyenv global 3.12.2

pyenv global <version1> <version2> — Legt mehrere globale Versionen fest (die erste ist Standard, die übrigen dienen als Fallback).

pyenv global 3.12.2 3.11.8

pyenv local <version> — Setzt die Python-Version für das aktuelle Verzeichnis (erzeugt .python-version).

pyenv local 3.11.8

pyenv shell <version> — Setzt die Python-Version nur für die aktuelle Shell-Sitzung.

pyenv shell 3.10.13

pyenv shell --unset — Hebt die Versions-Überschreibung auf Shell-Ebene auf.

pyenv shell --unset

pyenv version — Zeigt die aktuell aktive Python-Version und wie sie gesetzt wurde.

pyenv version

Infos & Kommandos

pyenv which <command> — Zeigt den vollständigen Pfad eines Kommandos für die aktive Version.

pyenv which python

pyenv whence <command> — Listet die Versionen auf, die ein bestimmtes Kommando bereitstellen.

pyenv whence pip

pyenv commands — Listet alle verfügbaren pyenv-Kommandos auf.

pyenv commands

pyenv root — Zeigt das pyenv-Wurzelverzeichnis.

pyenv root

pyenv prefix <version> — Zeigt den Installationspfad einer bestimmten Version.

pyenv prefix 3.12.2

pyenv-virtualenv

pyenv virtualenv <version> <name> — Erstellt eine virtuelle Umgebung mit einer bestimmten Python-Version.

pyenv virtualenv 3.12.2 myproject-env

pyenv virtualenvs — Listet alle virtuellen Umgebungen auf.

pyenv virtualenvs

pyenv activate <name> — Aktiviert eine virtuelle Umgebung.

pyenv activate myproject-env

pyenv deactivate — Deaktiviert die aktuelle virtuelle Umgebung.

pyenv deactivate

pyenv local <virtualenv-name> — Aktiviert eine virtuelle Umgebung automatisch beim Betreten eines Verzeichnisses.

pyenv local myproject-env

pyenv virtualenv-delete <name> — Löscht eine virtuelle Umgebung.

pyenv virtualenv-delete myproject-env

Wartung

pyenv rehash — Baut die Shim-Binaries neu auf (nach dem Installieren von Paketen mit ausführbaren Dateien ausführen).

pyenv rehash

pyenv update — Aktualisiert pyenv und alle installierten Plugins (über das pyenv-update-Plugin).

pyenv update

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

Verwandte Kommandos

  • apk – Paketmanager von Alpine Linux
  • apt – komfortabler Paketmanager für Debian und Ubuntu
  • apt-get – klassischer Paketmanager für Debian-Systeme