【问题标题】:distutils Extension arguments -- include vs depends vs source?distutils 扩展参数——包括 vs 依赖 vs 源?
【发布时间】:2018-02-20 00:38:29
【问题描述】:

我正在尝试了解 setup.py 中 pandas 的 cython extensions 的依赖结构。

distutils.extension.Extension 有参数sourcesdependsinclude_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.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”文件或两者兼而有之,或者...

我已经尝试了一大堆删除这些依赖项子集的排列方式,但没有看到很多破坏构建的模式。

【问题讨论】:

    标签: python include distutils


    【解决方案1】:

    查看detailed docsthe source code 以获取build_ext 命令。

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

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

    include_dirs — 编译器将在其中查找包含(头)文件 (*.h) 的目录列表。

    pxdfilesCython-specific

    【讨论】:

    • 我在depends 中添加了一个头文件,但python3 -m build 忽略了它。头文件不包含在tar.gz 文件中。因此,pip install 无法编译,因为缺少头文件。文档令人困惑。
    • build 是关于编译扩展的。 tar.gz 是一个源分布,命令sdist 的结果;这是一个完全不同的命令,需要不同的配置是setup.py
    • 谢谢。实际上sdist 需要MANIFEST.in 文件,因为它默认不包含头文件。我刚刚发现了这一点。添加此文件后,tar.gz 包含所有必需的文件,我设法使用pip install 构建了我的包。
    猜你喜欢
    • 1970-01-01
    • 2018-06-18
    • 2023-03-09
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    相关资源
    最近更新 更多