Modul zur Auflösung von Abhängigkeiten jeglicher Art

Probleme bei der Installation?
Antworten
gotridofmyphone
User
Beiträge: 33
Registriert: Mittwoch 15. März 2017, 08:54

Ich komme aus dem Perl-Bereich, wo das CPAN so geniale Module anbietet wie Algorithm::Dependency. Besonders das Untermodul A::D::Ordered hat mir schon echt viel Entwicklungsarbeit erspart. Wichtig ist mir, dass das Modul nicht zu fest mit dem Nutzungskontext "Software installieren" vertäut ist. Er muss auf jede Art von Objekten, eigentlich reichen auch nackte IDs als Zahl oder String, anwendbar sein, zu denen ich im Vorfeld die Abhängigkeiten ermittelt habe. Konkret soll mir das Modul diesen etwa als Dictionary of Lists spezifizierten Graph von Abhängigkeiten prüfen - Sind alle Abhängigkeiten erfüllt? Ist das Gestrüpp frei von Zirkelschlüssen? - und mir im Erfolgsfall etwa die beteiligten Referenzen in einer Reihenfolge zurückgeben, die diese Abhängigkeiten berücksichtigt.

Gibt es so etwas auch für Python?

Klar könnte ich das selbst schreiben (hier gäbe es ein How-to), auf den ersten Blick ist der Aufwand ja recht überschaubar. Die Auflösung von Abhängigkeiten ist allerdings nicht das Kerngeschäft der Projekte, in denen ich involviert bin, so dass ich hier bewährten Code von Dritten eigenem vorziehen würde. (OT: Kerngeschäftscode schreibe ich dagegen jedenfalls lieber selbst, aber so macht halt jeder seine Erfahrungen und lernt daraus, gell? :))

Suche ich im PIP-Repository, finde ich zwei Module, die vom Namen her diesem Zweck entsprechen.
  • dependency-graph 1.0.0 (Hompage -> 404)
  • DependencyGraph 1.0.0 (Homepage -> 404)
In beiden Python-Projekten, die ich zur Zeit betreue, brauche ich wahrscheinlich einen solchen Algorithmus. Ist das Problem für den geneigten Programmierer so trivial, dass es noch kein Modul gibt, das via PIP installiert werden kann? Hoffentlich werde ich zumindest jetzt mit besseren Begriffen beworfen, mittels denen ich besser suchen sollte. ;)


Danke und viele Grüße
Gotridofmyphone
BlackJack

@gotridofmyphone: Wenn ich direkt dazu nichts finden würde, dann würde ich beim NetworkX-Package schauen ob es dort etwas passendes gibt, oder ob das zumindest als Grundlage Arbeit abnehmen kann.
Antworten