pip-compile + Travis CI + verschiedene Django Versionen...

Probleme bei der Installation?
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich wollte bei https://github.com/jedie/django-tools mal auf pip-compile "umstellen"... Also eine requirements.in machen und per pip-compile alle Versionen festpinnen und damit die tests laufen lassen...

Allerdings ist mit nicht klar, wie man dann die Tests per tox mit verschiedenen Django Versionen laufen lassen kann. In der kompilierten requirements.txt ist ja dann auch Django auf irgendeine Version fest gepinnt.

Kennt jemand ein Projekt, bei dem das nach "best-practices" aufgebaut ist?!?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Für CI macht es Sinn mehrere requirements.txt Dateien zu haben um die Szenarien niedrigste unterstützte Versionen, aktuelle und zukünftige (momentanen in Entwicklung) zu testen.

Ansonsten fixiere die Version für Django nicht in deiner requirements.txt und installier erst Django in einer spezifischen Version und dann installier die Pakete aus requirements.txt. Den Ansatz würde man wählen wenn man z.b. sicherstellen will dass dein Projekt mit ganz bestimmten Django Versionen funktioniert.

Letzteres machen die meisten populären Django Apps, ersteres macht z.b. Flask.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mehrere requirements.txt ist vielleicht noch ok, wenn man nur von einer Komponente verschiedene Versionen Supporten will. Bsp verschiedene Django Versionen.

Wenn es aber zwei Komponenten sind bsp: verschiedene Django und Django CMS Versionen, dann kommt man damit nicht weit. Resultiert ja in einen unüberschaubaren haufen requirements.txt Dateien...

Ich hab mal nach Beispielen gesucht:

https://github.com/encode/django-rest-framework
Hier haben wir eine /requirements.txt die so aussieht:

Code: Alles auswählen

-r requirements/requirements-optionals.txt
-r requirements/requirements-testing.txt
-r requirements/requirements-documentation.txt
-r requirements/requirements-codestyle.txt
-r requirements/requirements-packaging.txt
Alle Libs in diesen Datein sind gepinnt und Django in keiner angegeben.
setup.py hat install_requires=[] was ja ok ist.
travis.yml setzt environment variablen, installiert selber nix.
tox.ini installtiert dann die unterschiedlichen Django versionen anhand der environment variable, anschließend z.b.: requirements/requirements-testing.txt

Also nix pip-compile, damit man eine vollständige Liste aller benötigten Pakete hat, bei der man die Lauffähigkeit garantiert.

Hab noch ein paar andere Projekte angesehen...

Ein größeres Projekt scheint mir https://github.com/18F/omb-eregs zu sein: "A tool to view and maintain White House Office of Management and Budget (OMB) policy requirements"
Darin wird auch pip-compile eingesetzt. Allerdings mit django>=1.11,<1.12 und ohne tox. Also keine verschiedene Versionen von Komponenten.

Generell scheinen eher wenige Projekte tox + pip-compile zu nutztn... Nun hab ich https://github.com/edx/help-tokens/ gefunden, was das macht. Ich glaube da versuche ich mir was abzuschauen...


Ansonsten, wer kennt noch gute Beispiele?!?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Du kannst doch nicht wirklich alle möglichen Dependency Kombinationen testen. Dazu würdest du massive Resourcen benötigen und die Wahrscheinlichkeit dass du tatsächlich einen Mehrwert davon hast ist gering.

Was DRF macht sollte vollkommen ausreichen und darüberhinaus zu gehen wäre Zeitverschwendung.
Antworten