Mehrere Python-Versionen mit pyenv

Mehrere Python-Versionen auf einem System mit Hilfe von pyenv – wie Sie pyenv installieren und nutzen erfahren Sie hier!
     

Manchmal kommt es vor, dass man gerne eine neuere Python-Version hätte, als die, die das System ausliefert – in meinem aktuellen Beispiel benötigte ich mindestens Python 3.8 auf einem Ubuntu 16.04.

Die Ubuntu-Maintainer liefern leider nur Python 3.5 als höchste Version mit… und wer weiß, was alles nicht mehr funktioniert, wenn man das händisch auf Python 3.8 oder Python 3.9 aktualisiert. Was also tun? pyenv!

Installation

Die Installation von pyenv ist denkbar einfach, denn es gibt den pyenv installer:

curl https://pyenv.run | bash

Zur Sicherheit installieren wir noch ein paar Pakete, die für die Installation der Python-Versionen nötig sein könnten:

apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev

Nun fügen wir den pyenv-Pfad noch in unsere PATH-Variable hinzu. Hierzu führen wir pyenv init aus und folgen den dortigen Anweisungen, um pyenv zukünftig bequem nutzen zu können.

Das war’s! Jetzt können wir mit Hilfe von pyenv mehrere Python-Versionen installieren und nutzen, ohne die bestehende Python-Installation zu gefährden.

Nutzung von pyenv

Um eine neue Python-Version auf unserem System zu installieren, schauen wir uns erstmal die zur Verfügung stehenden Versionen an:

~ # pyenv install --list
Available versions:
2.1.3
2.2.3
2.3.7
2.4.0
...
3.10.5
3.11.0b3
3.11-dev
3.12-dev

Wir wollen heute nun die aktuellste, stabile Version installieren – Version 3.10.5 also:

~ # pyenv install 3.10.5
Downloading Python-3.10.5.tar.xz...
-> https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tar.xz
Installing Python-3.10.5...
Installed Python-3.10.5 to /root/.pyenv/versions/3.10.5

Sofern die Installation erfolgreich war, können wir die gerade installierte Version entweder nur für unsere Terminal-Sitzung oder für das gesamte System als Standard setzen.

# Standard für aktuelle Terminal-Sitzung
pyenv local 3.10.5

# Standard für das gesamte System
pyenv global 3.10.5

Sollte man mal vergessen haben, welche Python-Versionen auf dem System installiert sind, kann man das natürlich auch nachschauen.

~ # pyenv versions
  system
* 3.10.5 (set by /root/.pyenv/version)
   3.9.13

Die Deinstallation einer bestimmten Python-Version ist natürlich genauso simpel.

~ # pyenv uninstall 3.10.5
pyenv: remove /root/.pyenv/versions/3.10.5? [y|N] y
pyenv: 3.10.5 uninstalled

Ich hoffe, mein kleiner Überblick hilft euch ein wenig beim Einstieg und freue mich über jede Rückmeldung in den Kommentaren!