distutils扩展参数 - include vs依赖vs源?

问题描述:

我想了解setup.py中pandas'cython extensions的依赖关系结构。distutils扩展参数 - include vs依赖vs源?

distutils.extension.Extension有自变量sources,dependsinclude_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.pxdsources条目中。在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 docsthe source code对于build_ext命令。

sources是编译扩展的源文件列表(*.c)。

depends - 扩展需要编译的附加文件列表。

include_dirs - 编译器查找包含(头文件)文件(*.h)的目录列表。

pxdfilesCython-specific