我想了解setup.py中pandas'cython extensions的依賴關係結構。distutils擴展參數 - include vs依賴vs源?
distutils.extension.Extension
有自變量sources
,depends
和include_dirs
,我無法弄清楚它們之間的區別。特別是在熊貓的情況下,我可以刪除depends
(或pxdfiles
)中的條目,而不會破壞構建。
這三個參數有什麼區別?
更新以下來自@phd的回答: 我很欣賞這個想法,會盡力更好地溝通我的困惑之源。
在大熊貓setup.py文件上面鏈接,所述pandas._libs.tslib
擴展被傳遞到distutils.extension.Extension
與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'])
採取例如util.pxd
在sources
條目中。在include_dirs
條目中是否存在pandas/_libs/src
這不是多餘的? tslib
直接從datetime.pxd
進口,它具有表格cdef extern from "datetime/np_datetime.h"
和cdef extern from "datetime/np_datetime_strings.h"
的「進口」。由於sources
中的「* .c」文件或depends
中的「* .h」文件或兩者都存在,所以這些是「允許」的,或者這兩個文件都存在或者...
我試過了一大堆排列去除這些依賴關係的子集,還沒有看到許多破壞構建的模式。