- Ermöglicht den einfachen Wechsel zwischen mehreren Python-Versionen
- Folgt der UNIX-Tradition eines einfachen, unauffälligen Werkzeugs mit einem klaren Zweck, das zuverlässig funktioniert
- Dieses Projekt wurde von rbenv und ruby-build abgespalten und für Python angepasst
Was pyenv macht
- Ermöglicht das Ändern der globalen Python-Version pro Benutzer.
- Unterstützt projektspezifische Python-Versionen.
- Ermöglicht das Überschreiben der Python-Version über Umgebungsvariablen.
- Kann mehrere Versionen von Python-Befehlen gleichzeitig durchsuchen. Das ist nützlich, um mit tox versionsübergreifend zu testen.
Was pyenv nicht macht...
- Hängt nicht von Python selbst ab. pyenv ist als reines Shell-Skript geschrieben.
- Muss nicht in die Shell geladen werden. Stattdessen verwendet es einen Shim-Ansatz durch das Hinzufügen eines Verzeichnisses zu
PATH.
- Verwaltet virtualenv nicht. Natürlich können Nutzer selbst virtualenvs erstellen oder dies mit pyenv-virtualenv automatisieren.
Wie es funktioniert
- pyenv fängt Python-Befehle über in
PATH eingeschleuste Shim-Executables ab, bestimmt die von der Anwendung angegebene Python-Version und leitet den Befehl dann an die entsprechende Python-Installation weiter.
PATH verstehen
- Wenn ein Befehl wie
python oder pip ausgeführt wird, sucht das Betriebssystem in der Liste der Verzeichnisse aus der Umgebungsvariablen PATH nach einer ausführbaren Datei mit diesem Namen.
Shims verstehen
- pyenv fügt das Verzeichnis shims an den Anfang von
PATH ein. Durch den Prozess des rehashing hält es Shims für alle Python-Befehle aller installierten Python-Versionen vor.
Auswahl der Python-Version verstehen
- Beim Ausführen eines Shims liest und verwendet pyenv die Python-Version in dieser Reihenfolge aus den folgenden Quellen:
- Die Umgebungsvariable
PYENV_VERSION (falls gesetzt).
- Die anwendungsspezifische Datei
.python-version im aktuellen Verzeichnis (falls vorhanden).
- Die erste
.python-version-Datei, die beim Durchsuchen aller übergeordneten Verzeichnisse bis zur Wurzel des Dateisystems gefunden wird (falls vorhanden).
- Die globale Datei
$(pyenv root)/version.
Den Installationsort der von pyenv bereitgestellten Python-Versionen finden
- pyenv leitet den Befehl abhängig von der ermittelten Python-Version an die entsprechende Python-Installation weiter.
- Jede Python-Version wird in ihrem eigenen Verzeichnis unter
$(pyenv root)/versions installiert.
Verwendung
Zusätzliche Python-Versionen installieren
- Verwende
pyenv install, um zusätzliche Python-Versionen zu installieren.
Automatische Auflösung zur neuesten Version
- Alle Pyenv-Unterbefehle außer
uninstall lösen vollständige Präfixe automatisch zur neuesten Version auf.
Python-Versionen mit Erweiterungsunterstützung
- Es gibt Python-Releases, auf die vom Nutzer bereitgestellte Patches angewendet werden, um in bestimmten Umgebungen zusätzliche Unterstützung bereitzustellen.
Zwischen Python-Versionen wechseln
- Um eine von Pyenv installierte Python-Version zu verwenden, führe einen der folgenden Befehle aus:
pyenv shell
pyenv local
pyenv global
Python-Versionen entfernen
- Mit der Zeit sammeln sich Python-Versionen im Verzeichnis
$(pyenv root)/versions an.
- Um alte Python-Versionen zu entfernen, verwende
pyenv uninstall .
Weitere Aufgaben
- Um eine Liste aller verfügbaren Unterbefehle anzuzeigen, führe
pyenv commands aus.
pyenv entfernen
- Es ist einfach, Pyenv vorübergehend zu deaktivieren oder vom System zu entfernen.
Pyenv-Plugins
- Mit Plugins lässt sich die Funktionalität von Pyenv auf einfache, flexible und wartbare Weise erweitern und anpassen.
Erweiterte Konfiguration
- Es gibt Umgebungsvariablen, die das Verhalten von Pyenv steuern.
Entwicklung
- Der Pyenv-Quellcode wird auf GitHub gehostet.
- Tests werden mit Bats ausgeführt.
Meinung von GN⁺
- pyenv ist ein sehr nützliches Tool zur Verwaltung verschiedener Python-Versionen. Besonders hilfreich ist es für Entwickler, die in mehreren Projekten unterschiedliche Python-Versionen einsetzen müssen.
- Da dieses Tool nicht von Python selbst abhängt und aus reinen Shell-Skripten besteht, kann es auch auf Systemen installiert und verwaltet werden, auf denen Python nicht installiert ist.
- pyenv verwaltet virtualenv nicht direkt, aber mit dem Plugin pyenv-virtualenv lässt sich die virtualenv-Verwaltung bequem automatisieren.
- Da Installation und Nutzung relativ einfach sind, ist es auch für Einsteiger im Software Engineering mit Bedarf an Python-Versionsverwaltung gut zugänglich.
- Ein anderes Tool mit ähnlicher Funktionalität wie pyenv ist
conda, das besonders in den Bereichen Data Science und Machine Learning weit verbreitet ist. Da conda Paketverwaltung und Umgebungsverwaltung zusammen bietet, kann es für Nutzer empfohlen werden, die diese Funktionen benötigen.
- Bei der Einführung von pyenv ist Vorsicht geboten, wenn bereits mehrere Python-Versionen auf dem System installiert sind, um Pfadkonflikte zu vermeiden. Der Vorteil von pyenv liegt in der einfachen Versionsverwaltung, aber eine falsche Konfiguration kann den Standard-Python-Pfad des Systems beeinträchtigen.
7 Kommentare
Bei
condaist Vorsicht geboten: In Unternehmen ab einer gewissen Größeist es kostenpflichtig.
Auch wenn die eigene Firma klein ist, ist die Auslieferung heikel, wenn der Auftraggeber groß ist.
Conda selbst ist unter BSD kostenlos, aber Sie sollten sich die Lizenzen des Repositories und der Pakete genau ansehen.
Ich setze
asdfauf oberster Ebene ein: https://asdf-vm.com/Je nach Projekt konfiguriere ich es auch lokal oder nutze Container ...
Inzwischen gibt es so viele Möglichkeiten, neue Umgebungen aufzusetzen und zu verwalten, dass ich es eigentlich nicht mehr oft benutze .. haha
Ich nutze es auch genau so.
Haha, persönlich habe ich das Gefühl, dass pyenv inzwischen ein bisschen altbacken wirkt.
Weil ständig Dinge wie
rbenv,pyenvundnodenvauftauchen, ist am Ende sogar nochanyenventstanden. hahahttps://github.com/anyenv/anyenv
Hacker-News-Kommentare
Warnung vor der Nutzung von pyenv
Das Leid der Python-Programmierer
Werkzeuge, um Python-Programme stabil zu halten
Vorstellung des Tools Mise
Vorteile von ASDF
Erfahrungen mit pyenv
python<version> -m venv /my/virtual/envzu verwalten.Persönlicher Python-Verwaltungs-Stack
Verwaltung von Laufzeitabhängigkeiten mit Mise
Geteilter macOS-Workflow
Ich glaube, genau dieser Punkt ist besonders schmerzhaft.