2017-09-11 5 views
1

J'essaie de comprendre la structure de dépendance du cython extensions de pandas dans setup.py.distutils Arguments d'extension - inclure vs dépend vs source?

distutils.extension.Extension a des arguments sources, depends et include_dirs, et je ne peux pas comprendre la différence entre ceux-ci. En particulier, il y a un tas d'endroits dans le cas de pandas où je peux supprimer des entrées dans depends (ou pxdfiles) sans casser la construction.

Quelle est la distinction entre ces trois arguments?

mise à jour suivante réponse de @phd: J'apprécie la pensée, va essayer de mieux communiquer la source de ma confusion.

Dans les pandas géants fichier setup.py lien ci-dessus, l'extension pandas._libs.tslib est passé à distutils.extension.Extension avec les 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']) 

Prenez par exemple util.pxd dans l'entrée sources. Est-ce que ce n'est pas redondant avec la présence de pandas/_libs/src dans l'entrée include_dirs? tslib importe directement à partir de datetime.pxd qui a des "importations" de la forme cdef extern from "datetime/np_datetime.h" et cdef extern from "datetime/np_datetime_strings.h". Sont-ils "autorisés" en raison de la présence des fichiers "* .c" dans le sources ou les fichiers "* .h" dans le depends ou les deux ou ...

J'ai essayé toute une série de permutations de supprimer des sous-ensembles de ces dépendances, n'ont pas vu de nombreux modèles en termes de rupture de la construction.

Répondre

0

Voir la commande detailed docs et the source code pour build_ext.

sources est une liste de fichiers source (*.c) pour compiler l'extension.

depends - une liste de fichiers supplémentaires que les extensions doivent compiler.

include_dirs - une liste de répertoires dans lesquels un compilateur recherchera des fichiers (en-tête) (*.h).

pxdfiles sont Cython-specific.