meson-python

一个利用 Meson 构建系统的 Python 包构建后端。

meson-python 实现 Python 构建系统钩子,使 Python 构建前端(如 pipbuild)能够基于 Meson 构建定义来构建和安装 Python 包。

Meson 的特点是构建定义使用易于阅读的领域特定语言编写,并且构建速度极快。Meson 支持 Windows、macOS、Linux 和其他类 Unix 操作系统,以及所有主要的编译器工具链。它允许编译和链接用多种编程语言编写的代码,包括 C、C++、Cython、D、Fortran、Objective C 和 Rust。它内置的多平台依赖项提供程序与发行版包配合良好,并且能够构建依赖项作为子项目。如果您不熟悉 Meson,我们建议您查看 Meson 教程

meson-python 继承了 Meson 的优点,因此最适合构建用编译语言编写的扩展模块的 Python 包。 meson-python 适用于小型包以及非常复杂的包,请参见我们的 示例 目录。

要使 pipbuild 能够为 Meson 项目构建 Python 源代码分发(sdist)或二进制 Python 包(wheel),只需在源代码树的根目录中,与顶层 meson.build 文件并存地添加一个 pyproject.toml 文件,并指定 meson-python 作为 Python 构建后端。

[build-system]
build-backend = 'mesonpy'
requires = ['meson-python']

包名和版本从通过 meson.build 文件中的 project() 函数提供给 Meson 的元数据中提取。可以使用 pyproject.toml 文件的 project 部分中的标准包元数据格式来覆盖和扩展包元数据。

[project]
name = 'example'
version = '1.0.0'
description = 'Example package using the meson-python build backend'
readme = 'README.rst'
license = {file = 'LICENSE.txt'}
authors = [
  {name = 'Au Thor', email = '[email protected]'},
]

[project.scripts]
example = 'example.cli:main'

有关 pyproject.toml 文件的详细文档,请参阅 PyPA 文档。有关使用 meson-python 和 Meson 进行 Python 打包的指导,请参阅我们的 教程