First project#

Advanced guide

This guide assumes you are already familiarized with Python packaging! If you aren’t, we recommend you check our Introduction to Python packaging with meson-python tutorial instead.

meson-python builds on top of an existing Meson project, so you’ll need the top-level meson.build for a Meson project next to your pyproject.toml. You can check our example project or the projects in the Projects using meson-python page for examples.

Getting started with Meson

If you are not familiar with Meson, we would recommend checking out their tutorial.

Specifying the backend#

Our build backend is called mesonpy, and that’s what you should specify in the build-system.build-backend key of pyproject-toml.

You should add meson-python, and all other build dependencies (eg. Cython) needed by your Meson project, in the build-system.requires key.

Example#

pyproject.toml#
[build-system]
build-backend = 'mesonpy'
requires = ['meson-python', 'cython']

Specifying the project metadata#

We use the standard metadata format in the project section of pyproject.toml.

Please refer to the relevant PyPA documentation page for a full specification.

Example#

pyproject.toml#
[build-system]
build-backend = 'mesonpy'
requires = ['meson-python', 'cython']

[project]
name = 'example-package'
version = '1.0.0'
description = 'Our example package using meson-python!'
readme = 'README.md'
requires-python = '>=3.8'
license = {file = 'LICENSE.txt'}
authors = [
  {name = 'Bowsette Koopa', email = 'bowsette@example.com'},
]