Ich beschäftige mich gerade etwas intensiver damit, wie man seine Python Build Umgebung strukturiert.
Mein letztes größeres Python Projekt habe ich noch mit "virtualenv" und "setuptools" gebaut - aber da hat sich ja einiges getan.
Ich beschreibe im Folgenden einmal meine aktuellen Erkenntnisse - vielleicht gibt es ja an der einen oder anderen Stelle noch Empfehlungen für Alternativen (mit Begründung):
1. „Virtualisierung“ der Python Version über pyenv
Das scheint mir aktuell die einzige Variante zu sein, wie man einfach unterschiedliche Python Versionen in seiner Entwicklungsumgebung nutzen kann.
Außerdem funktiontiert das mit pipenv.
2. „Virtualisierung“ der installierten Pakete im Projekt über pipenv
Das scheint mir der empfohlene Nachfolger von virtualenv oder venv zu sein.
3. PEP 517 Konforme Festlegung der Build-Chain über pyproject.toml
4. Deklarative Nutzung von Setuptools als Build Werkzeug. Hier gibt es wohl auch einige Alternativen, aber da habe ich noch nicht die Zeit gefunden, mich damit zu beschäftigen.
Als Alternative für 1. und 2. hatte ich auch schon einmal mit dem Gedanken gespielt, mir einen Docker-Container mit der entsprechenden Python Version und den benötigten Bibliotheken zu installieren, finde die Lösung mit 1. und 2. aber mehr „Python“-typisch.
Habt Ihr dazu noch Empfehlungen oder vielleicht auch Alternativvorschläge.
Viele Grüße
Stefan
Aktuelle Empfehlung für Python Build Umgebung
Ich habe jetzt noch einiges dazu gelesen - und dabei neue Erkenntnisse gewonnen - und neue Fragen:
1. Viele Aussagen über Pipenv scheinen nicht zu stimmen und stammen scheinbar aus einem Blog-Eintrag, der mehr Marketing als Fakten enthielt. Ich werde mich daher mit Pipenv erst einmal nicht mehr beschäftigen.
2. Pyenv unterstützt neben Unterschiedlichen Python-Versionen auch das Anlegen von „Virtuellen Umgebungen“.
Dabei wird - je nach Python Version 'virtualenv' oder 'venv' genutzt.
3. Laut PEP 517 sollte man ja sein Build-System in einer pyproject.toml Datei spezifizieren.
Dazu meine Frage:
Mit welchem Werkzeug kann man das Build-System, dass in pyproject.toml unter 'build-system/requires' angegeben ist, installieren? (Also so, dass ich die benötigten Tools nicht noch einmal selbst angeben muss, sondern dass die Informationen aus der pyproject.toml gelesen werden.) Pip macht das nämlich nicht! Oder habe ich da etwas nicht richtig verstanden und man muss diese Build-Abhängigkeiten immer von Hand installieren?
Viele Grüße
Stefan
1. Viele Aussagen über Pipenv scheinen nicht zu stimmen und stammen scheinbar aus einem Blog-Eintrag, der mehr Marketing als Fakten enthielt. Ich werde mich daher mit Pipenv erst einmal nicht mehr beschäftigen.
2. Pyenv unterstützt neben Unterschiedlichen Python-Versionen auch das Anlegen von „Virtuellen Umgebungen“.
Dabei wird - je nach Python Version 'virtualenv' oder 'venv' genutzt.
3. Laut PEP 517 sollte man ja sein Build-System in einer pyproject.toml Datei spezifizieren.
Dazu meine Frage:
Mit welchem Werkzeug kann man das Build-System, dass in pyproject.toml unter 'build-system/requires' angegeben ist, installieren? (Also so, dass ich die benötigten Tools nicht noch einmal selbst angeben muss, sondern dass die Informationen aus der pyproject.toml gelesen werden.) Pip macht das nämlich nicht! Oder habe ich da etwas nicht richtig verstanden und man muss diese Build-Abhängigkeiten immer von Hand installieren?
Viele Grüße
Stefan