distutils扩展参数 - include vs依赖vs源?
我想了解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”文件或两者都存在,所以这些是“允许”的,或者这两个文件都存在或者...
我试过了一大堆排列去除这些依赖关系的子集,还没有看到许多破坏构建的模式。
查看detailed docs和the source code对于build_ext
命令。
sources
是编译扩展的源文件列表(*.c
)。
depends
- 扩展需要编译的附加文件列表。
include_dirs
- 编译器查找包含(头文件)文件(*.h
)的目录列表。
pxdfiles
是Cython-specific。