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.