【发布时间】:2018-02-20 00:38:29
【问题描述】:
我正在尝试了解 setup.py 中 pandas 的 cython extensions 的依赖结构。
distutils.extension.Extension 有参数sources、depends 和include_dirs,我不知道它们之间的区别。特别是,在 pandas 案例中有很多地方我可以在不破坏构建的情况下删除 depends(或 pxdfiles)中的条目。
这三个论点有什么区别?
更新@phd 的以下回答: 我很欣赏这个想法,将尝试更好地传达我的困惑的根源。
在上面链接的 pandas setup.py 文件中,pandas._libs.tslib 扩展名通过 args/kwargs 传递给 distutils.extension.Extension:
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”文件或两者兼而有之,或者...
我已经尝试了一大堆删除这些依赖项子集的排列方式,但没有看到很多破坏构建的模式。
【问题讨论】: