Motivation
Bisher habe ich mit Begeisterung Anaconda/Miniconda und das virtualenv
Konzept von Python verwendet. Kürzlich habe ich allerdings gelernt, dass die Conda Bibliotheken nicht für die Nutzung in Unternehmen freigegeben sind, ich also im Büro eine andere Alternative benötige. Zwei Argumente sprechen damit auch für einen Wechsel zuhause: Einerseits nutze ich im Büro gerne ein ähnliches Setup wie zuhause. Andererseits bevorzuge ich freie Software nach den vier Grunprinzipien freier Software - was die Conda Bibliotheken ja nicht erfüllen.
Damit war aber klar: Auch zuhause werde ich umsteigen.
Conda war eigentlich eh nicht mehr sehr relevant. Ich habe es genutzt um verschiedene Python-Versionen zu nutzen; alles andere ist sowieso in virtuellen Umgebungen mithilfe von venv
passiert. Damit war ein Umstieg also nicht allzu schwierig.
Mögliche Alternativen
Es gibt einige Möglichkeiten. Am Ende gibt es aber eigentlich nur wenige wirklich wesentliche: Einerseits Conda mit all deren Ableitungen (was ich ja loswerden möchte), venv (womit ich aber nicht mehrere Python-Versionen managen kann, also nicht brauchbar) und einige komplexere Alternativen. Ich habe Pyenv gewählt, weil es meinen Use Case unterstützt und nicht zu komplex ist.
Installation
Die Installation ist überraschend einfach auf einem Entwickler-System. Das wesentlichste benötigte Tool ist Git, und das benötige ich als Entwickler ja sowieso. Dann führe ich nur curl -fsSL https://pyenv.run | bash
aus - ohne weiter auf die curl | bash
Diskussion einzugehen.
Danach musste ich Pyenv in meine Shell integrieren. Da ich Fish nutze, waren die folgenden Schritte nötig:
set -Ux PYENV_ROOT $HOME/.pyenv; fish_add_path $PYENV_ROOT/bin
. Dadurch wird der Pyenv-Pfad zum Pfad hinzugefügt. Diese Konfiguration wir zusätzlich in einer Fish-Konfigurationsdatei gespeichert, daher muss das nur einmalig passieren.- Pyenv tatsächlich aktivieren: In
~/.config/fish/config.fish
habe ich eine Zeile hinzugefügt mit dem Inhaltpyenv init - fish | source
. - Schlussendlich ware noch ein paar Pakete nötig, da der Python Source Code heruntergeladen und am Gerät installiert wird. Basieren auf den Docs habe ich auf Debian ausgeführt:
sudo apt install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl git libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Das wars!
Grundsätzliche Verwendung
- Ich starte damit, eine Python-Version zu installieren:
pyenv install 3.13
; damit wird die aktuellste3.13
-Version (aktuell3.13.2
) installiert. 3.13
als Standard-Python Interpreter verwenden:pyenv global 3.13
. Ab sofort löst der Befehlpython
in die Pyenv-Installation auf.- Temporär eine andere Version nutzen:
pyenv shell 3.12
. Dann wird in dieser Shell die Python-Version3.12
genutzt (beachte dass die zuerst noch instaliert werden möchte). - Von hier an kann ich, wie gewohnt, wieder virtuelle Umgebungen nutzen.
Was ich noch tun möchte
Ich habe eine recht große Installation von Jupyter Notebook, mit einigen erweiterten Kernels (Sagemath, R, Octave und einige andere). Mir ist noch nicht klar wie ich diese Installation ersetzen kann; darüber werde ich in Zukunft aber sicher noch bloggen.
Zusammenfassung
Wenn ich gewusst hätte wie simpel der Transfer ist, hätte ich diesen Umstieg schon wesentlich früher durchgeführt. Jetzt gefällt mir mein Setup für den Moment, und ich freue mich darauf, damit zu arbeiten.