Hallo,
ich bin mir nicht sicher, wo ich den Beitrag am besten posten soll. Unter Leap hatte ich in den letzten Monaten gelegentlich das Problem, dass ich Python-Programme testen wollte, aber die Python-Version von Leap zu alt war. Ich habe dann herausgefunden, dass es mit pyenv ein Tool gibt, womit man verschiedene Python-Versionen auf dem System einrichten und zwischen ihnen frei wechseln kann.
Ich bin so vorgegangen,
1. dass ich pyenv zunächst über die Softwareverwaltung/Zypper installiert habe. Irgendwas ging dabei nicht richtig. Ich habe dann das Verzeichnis ~/.pyenv gelöscht und bin nach der manuellen Installationsanleitung auf https://github.com/pyenv/pyenv#installation vorgegangen:
(... wobei ich da wieder ein http/https-Problem hatte und es am Ende mit http funktioniert hat)
2. um später Python-Umgebungen einzurichten, müssen leider noch weitere Pakete in zypper nachinstalliert werden. Hier wurden leider keine Abhängigkeiten definiert. Bei mir war es:
-libopenssl-*-devel (passend zur installierten libopenssl - ohne bricht später die Installation anderer Versionen ab)
-sqlite3 und sqlite3-devel (ohne gibt es später eine Warnung)
-python-tk
-tk-devel
-tcl-devel
-python3-virtualenv
(weitere Abhängigkeiten sind laut der Projektseite
zypper install gcc automake bzip2 libbz2-devel xz xz-devel openssl-devel ncurses-devel \
readline-devel zlib-devel tk-devel libffi-devel sqlite3-devel gdbm-devel make findutils patch
aber anscheinend war davon schon einiges bei mir installiert oder kam mit dem pyenv-Paket...)
3. anschließend muss ~/.bashrc und ~/.profile ergänzt werden:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.profile
Ich hoffe, dass ich nichts vergessen habe...
liest die geänderte bash-Konfiguration neu ein.
II. Benutzung:
1.
Listet installierte Umgebungen
2.
listet aktuell von pyenv aktivierte Python-Version
3.
der endgültige Test: welche Version liefert die Python-Umgebung zurück?
4.
installiert die Umgebung Python 3.9.1
5.
aktiviert Version 3.9.1 als lokale / globale Umgebung. Den genauen Unterschied habe ich noch nicht verstanden. Mir scheint bisher local für meine Zwecke zu reichen. Überprüfung mit pyenv versions (Markierung durch Stern) oder python --version.
6.
soll die Shell-Anmeldung anstelle der obigen manuellen .bashrc erledigen, habe ich aber noch nicht getestet.
Jedenfalls finde ich das Tool sehr nützlich. Man kann sich beliebige Python-Umgebungen ziehen und das System zwischen ihnen umschalten. Gerade bei Leap ist Python ja immer ein gewisses Thema... Ich muss mich aber noch genauer damit befassen, was es mit local/global und virtuellen Python-Umgebungen auf sich hat. Interessant ist auch, dass nach einem Distributionsupgrade von Leap 15.4 auf 15.5 die Shell-Einbindung weg war. Heisst das, zypper dup überschreibt .bashrc und .profile der User?
Plugins:
pyenv unterstützt Plugins, welche auf der Projektseite angeboten werden. Sie werden in .pyenv/plugins in Unterverzeichnissen installiert. Ich habe sie einfach über die git clone-Aufrufe auf den jeweiligen Plugin-Webseiten des pyenv-Projekts auf github installiert, also z.B.