2017-09-11 5 views
1

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.

Antwort

0

Siehe detailed docs und the source code für build_ext Befehl.

sources ist eine Liste der Quelldateien (*.c), um die Erweiterung zu kompilieren.

depends - eine Liste zusätzlicher Dateien, die die Erweiterungen kompilieren müssen.

include_dirs - eine Liste von Verzeichnissen, in denen ein Compiler nach (Include-) Dateien sucht (*.h).

pxdfiles sind Cython-specific.

Verwandte Themen