改进的Python C/C++/Fortran/Cython扩展构建系统生成器
项目描述
scikit-build 是一个用于 CPython C/C++/Fortran/Cython 扩展的 Python 构建系统,它使用 CMake。
scikit-build 包本质上只是 setuptools Python 模块和 CMake 之间的粘合剂。
scikit-build 的下一代,scikit-build-core,目前正在开发中。它为 CMake 提供了一个简单、可靠的构建后端,不使用 setuptools,并提供了许多新功能。Scikit-build-core 还可以为基于 setuptools 的扩展系统供电,这最终将成为 scikit-build(经典)的后端。如果您不需要对构建过程进行大量自定义,您可以考虑尝试 scikit-build-core 而不是 scikit-build。
要开始使用,请参阅 此示例。有关更多示例,请参阅 scikit-build-sample-projects。
Scikit-build 0.18.1
此版本修复了与 setuptools 74 相关的问题,并避免了来自 wheel 最近版本的警告。Android 和 iOS 现在包括在已知平台中。
错误修复
在 #1116 中支持 setuptools 74
由 @FeodorFitsner 在 #1101 中支持 iOS 和 Android
测试
在 #1103 中修复了 distutils 的更改
由 @s-t-e-v-e-n-k 在 #1108 中删除了测试指令
Scikit-build 0.18.0
此版本将最低要求的 CMake 提高到 3.5,并支持 CPython 3.13。
错误修复
测试
在 #1087 中由 @s-t-e-v-e-n-k 在两个测试中支持 setuptools 69.3.0 的更改
在 #1092 中在几个地方使用 uv
Fedora CI
杂项
Scikit-build 0.17.6
一个小修复版本,增加了新平台和更好的测试,包括CPython 3.12.0b1。
错误修复
由@bhuntsman添加对AIX(与最近版本的CMake)的支持,请参考#988。
测试
杂项
文档改进,请参考#979。
Scikit-build 0.17.5
一个小修复版本,修复了传递生成器特定参数的问题。这修复了一些Ninja生成器被找到但无法构建的情况。NetBSD报告称可以工作,因此已添加到支持的BSD列表中。
错误修复
Scikit-build 0.17.4
对0.17.3问题的后续修复。我们现在有了手动测试下游包的方法。
错误修复
确保即使库不存在,也能找到包含目录,请参考#974。
Scikit-build 0.17.3
一个小版本,与0.17.2中PYTHON_LIBRARY处理更改相关;scikit-build 0.17.3如果不存在Python库(例如在manylinux上),则从get_python_library返回空字符串,而0.17.2返回None,而早期版本返回一个不存在的路径。请注意,将REQUIRED添加到find_package(PythonLibs将失败,这是不正确的(你不应该链接到libPython.so)并且实际上是之前注入了一个不存在的路径。
错误修复
Scikit-build 0.17.2
另一个针对非MSVC Windows平台的微小版本更新,包含了一些修复。
错误修复
测试
在 #948 中隐藏了一些预期的警告。
Scikit-build 0.17.1
这是一个小版本更新,修复了一些错误;主要是一个可能导致旧版 FindPython 出现错误的更改。为了简化输出,已经停用了未使用的变量消息。
错误修复
测试
Scikit-build 0.17.0
本版本包含大量错误修复,重点在于 Windows、PyPy 和交叉编译。我们还稍微提高了与默认 setuptools 行为的兼容性,并启用了一些以前不可用的功能,例如通过 cmake 参数环境变量覆盖构建类型。我们扩展了 CI 矩阵,包括 Windows 和 macOS PyPy 以及 Linux 上的某些 Fortran 测试。本版本要求 Python 3.7+。
错误修复
通过 @vyasr 在 #873 中匹配 include_package_data 的默认 setuptools 行为。
在 #902 中允许覆盖构建类型。
通过用户 gershnik 在 #904 中正确检测 Windows 上的 PyPy 库。
在 #913 中包含 FindPython 的库以更好地进行 Windows 交叉编译。感谢用户 maxbachmann 进行测试。
如果存在,在 #877 中使用 f2py 的 get_include。
通过 @erykoff 在 #901 中使用 targetLinkLibrariesWithDynamicLookup 修复了交叉编译异常的支持。
将空的 MACOSX_DEPLOYMENT_TARGET 视为未设置,如在 #918 中所述。
测试
杂项
出版物
在科学出版物中引用 scikit-build 时,请使用第一条引用。
Jean-Christophe Fillion-Robin, Matt McCormick, Omar Padron, Max Smolens, Michael Grauer, & Michael Sarahan. (2018, July 13). jcfr/scipy_2018_scikit-build_talk: SciPy 2018 Talk | scikit-build: A Build System Generator for CPython C/C++/Fortran/Cython Extensions. Zenodo. https://doi.org/10.5281/zenodo.2565368
Schreiner, Henry, Rickerby, Joe, Grosse-Kunstleve, Ralf, Jakob, Wenzel, Darbois, Matthieu, Gokaslan, Aaron, Fillion-Robin, Jean-Christophe, & McCormick, Matt. (2022, August 1). Building Binary Extensions with pybind11, scikit-build, and cibuildwheel. https://doi.org/10.25080/majora-212e5952-033
历史
PyCMake 是在 2014 年的 SciPy 大会上创建的,以解决跨平台构建基于 C++ 和 Fortran 的 Python 扩展的普遍困难。它在 2016 年更名为“scikit-build”。Scikit-build-core 于 2022 年开始。
已知问题
这些问题可能在即将发布的版本中得到解决,并且在 scikit-build-core 中已经得到解决。
可编辑的安装与最新版本的 Setuptools 不兼容(并且与较旧版本也存在问题)。
目前,scikit-build关心的配置必须在 setup() 中指定。
在某些情况下(如使用不同的 Python 解释器重新构建),可能需要在构建之间删除缓存目录(_skbuild)。
AIX 需要一个比 AIX Toolbox for Open Source Software 中提供的 IBM CMake 3.22.0 更新的 CMake 版本。我们目前建议在 AIX 上从源代码构建 CMake。
我们还在努力改进 scikit-build,因此有一些即将到来的更改和弃用。
所有已弃用的 setuptools/distutils 功能在 scikit-build 中也已弃用,例如 test 命令、easy_install 等。
不推荐使用较旧的 CMake 版本(<3.15);未来版本将移除对较旧 CMake 的支持(并提供更好的机制以确保可获取适当的 CMake)。
如果您需要这些功能中的任何一项,请打开或查找一个说明您需要什么以及为什么需要它的 issue。
杂项
免费软件:MIT 许可证
Scikit-build-core:https://github.com/scikit-build/scikit-build-core
本工作的支持由 NSF 奖助金 OAC-2209877 提供。
项目详情
下载文件
下载适用于您平台文件的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。