Ich wollte eigentlich heute effektiv etwas an einem privaten Softwareprojekt machen und dachte ich tue mir einen Gefallen wenn ich für das Bootstrapping ein cookiecutter template verwende.
Tatsächlich habe ich seit heute morgen leider schon drei Templates ausprobiert. Mich mit den Unzulänglichkeiten von WSL2 herum geärgert und bei allen Templates außer den letzten irgendwann eine Krise bekommen, weil Sie mir mehr Arbeit als nutzen brachten.
Auch beim letzten Template muss ich einiges vom Grundaufbau anpassen, da ist also mein Fazit ganz klar, ein Flask-Projekt cookiecutter Template werde ich wohl entweder noch länger suchen müssen oder aus mal aus einem / mehreren gleich aufgebauten Projekten eines bauen müssen.
Der größte Tiefpunkt beim Letzten Template war für mich der folgende Eintrag in der requirements.txt.
flask==0.10.1
Mir ist da wieder schmerzlich bewusst geworden, dass unter uns Python Entwicklern zu wenig über Abhängigkeitsmanagement gesprochen wird. Und ja es muss das
darüber reden sein, denn Tools gibt es dazu ja.
Ich habe mich gefragt, ob es dann nicht auch ein tool gibt mit dem man regelmäßig seine gepinnten Versionen in der requirements.txt aktualisieren kann. Denn dann würde da nicht eine derart veraltete Version stehen.
Und ja, es gibt da ein Python-Modul, mein Modul der Woche, und das will was heißen, denn ich habe ja gar nicht jede Woche eines LOL:
https://github.com/jazzband/pip-toolsMan legt sich in seinem Projekt einfach eine requirements.in an, die einer requirements.txt entspricht, nur eben ohne Versionsnummern.
Dann kann man bei regelmä0ig die requirements.txt aktualieren mit:
pip-compile requirements.in
Es war jetzt auf die schnelle sehr gut um einfach aus allen Paketangaben die Versionsnummern zu streichen und eine Vollständig aktuelle requirements.txt für den Start meines Projektes zu haben.
Ich stelle mir vor, dasss man das großartig in eine Buildpipeline einbauen kann bevor in der Form:
build->test->deploy
Ein Paraleller build und Test zweig, der Fehlschlagen darf aber eine Warnung verursacht, wenndie Tests nach dem aktualisieren der Pakete im build nicht mehr funktionieren.
Aber auch ohne eine solche Pipeline ist das Tool derart einfach einzusetzen, dass man es ohne weiter darüber nach zu denken einfach machen sollte.
Wenn wir Software bauen, sollten wir sie so bauen, dass es einfach ist auch den Unterbau aktuell und damit möglichst frei von Bugs und Sicherheitslücken zu halten. Wir haben schließlich genug damit zu tun uns um unsere eigenen zu kümmern.