So machen Sie Makefile -Abhängigkeiten für Python -Code
-
04-07-2019 - |
Frage
Ich habe eine Reihe von C -Dateien, die durch eine Sammlung von Python -Programmen generiert werden, die über eine Reihe gemeinsamer Python -Module verfügen, und ich muss dies in meinem System -System berücksichtigen.
Es ist leicht genug zu zählen, welches Python -Programm ausgeführt werden muss, um jede C -Datei zu generieren. Was ich keine gute Lösung finden kann, ist die Bestimmung, welche anderen Python -Dateien diese Programme abhängen. Ich brauche dies, damit die Make wissen wird, was sich regeneriert, wenn sich eine der gemeinsam genutzten Python -Dateien ändert.
Gibt es ein gutes System zur Herstellung von Regeln für Stilabhängigkeit aus einer Sammlung von Python -Quellen?
Lösung
Modulefinder kann benutzt werden um Holen Sie sich die Abhängigkeitsgrafik.
Andere Tipps
Das import
Aussagen sind so ziemlich alle Abhängigkeiten, die es gibt. Es gibt zwei relevante Formulare für die Importanweisungen:
import x, y, z
from x import a, b, c
Sie werden auch die brauchen PYTHONPATH
und sites
Informationen, die zum Erstellen verwendet werden sys.path
. Dies zeigt die physischen Stellen der Module und Pakete.
Das ist schmerzhaft zu verarbeiten, da Sie den transitiven Verschluss aller Importe in allen von Ihnen importierten Modulen durchführen müssen.
Als alternativer Ansatz können Sie die verwenden -v
Option, um die vollständige Liste der Importe und physischen Dateien zu erhalten. Dies erzeugt ein Protokoll, das Sie in eine flache Liste von Abhängigkeiten bearbeiten können.
Zum Beispiel, wenn ich es tue
>>> import math
Ich sehe das im Protokoll
dlopen("/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/math.so", 2);
import math # dynamically loaded from /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/math.so