Ich versuche, die Abhängigkeitsstruktur von Pandas Cython extensions in setup.py zu verstehen.distutils Erweiterungsargumente - Einschluss vs Abhängigkeit vs Quelle?
distutils.extension.Extension
hat Argumente sources
, depends
und include_dirs
, und ich kann den Unterschied zwischen diesen nicht herausgefunden. Insbesondere gibt es eine Menge Orte im Pandas-Fall, wo ich Einträge in depends
(oder pxdfiles
) löschen kann, ohne den Build zu brechen.
Was ist der Unterschied zwischen diesen drei Argumenten?
Update folgende Antwort von @ PHD: Ich schätze den Gedanken, wird versuchen, die Quelle meiner Verwirrung besser zu kommunizieren.
In dem Pandas setup.py-Datei oben verbunden, die pandas._libs.tslib
Erweiterung übergibt distutils.extension.Extension
mit dem args/kwargs:
ext = Extension('pandas._libs.tslib',
sources=['pandas/_libs/tslib.pyx',
'pandas/_libs/src/util.pxd',
'pandas/_libs/src/datetime/np_datetime.c',
'pandas/_libs/src/datetime/np_datetime_strings.c',
'pandas/_libs/src/period_helper.c'],
depends=['pandas/_libs/src/datetime/np_datetime.h',
'pandas/_libs/src/datetime/np_datetime_strings.h',
'pandas/_libs/src/period_helper.h',
'pandas/_libs/src/datetime.pxd'],
include_dirs=['pandas/_libs/src/klib', 'pandas/_libs/src'])
Nehmen Sie zum Beispiel util.pxd
im sources
Eintrag. Ist dies nicht redundant mit der Anwesenheit von pandas/_libs/src
in der include_dirs
Eintrag? tslib
Importe direkt von datetime.pxd
, die "Importe" der Form cdef extern from "datetime/np_datetime.h"
und cdef extern from "datetime/np_datetime_strings.h"
hat. Sind diese "erlaubt" wegen des Vorhandenseins der "* .c" Dateien in der sources
oder der "* .h" Dateien in der depends
oder beiden oder ...
Ich habe eine ganze Reihe von Permutationen ausprobiert des Entfernens von Teilmengen dieser Abhängigkeiten, haben nicht viele Muster gesehen, bei denen der Aufbau aufgebrochen wird.