maturinは、PyO3を使ったアプリケーションのビルドを行うツール。
pyo3クレートの一環として提供されている。
maturinを使ってPyO3プロジェクトを作ることが出来る。
maturinを使ってビルドすると配布用のwheelファイルを生成できる。
PyO3プロジェクト内でuv run pythonを実行すると自分が作ったモジュールを使用できるが、その際にも(暗黙に)maturinがビルドを行っている。
maturinをインストールするには、先にPythonをインストールおよびuvをインストールしておく。
maturin 1.10.2はPython 3.8以降に対応しているようだ。
uv tool install maturin
> uv run maturin --version maturin 1.10.2
PyO3プロジェクトをmaturinで作成するには、newコマンドを使う。
newコマンドの引数として、作成するプロジェクト名を指定する。
uv run maturin new example-pyo3
途中でどのライブラリーを使うか聞かれるので、pyo3を選ぶ。
maturinの設定は、pyproject.tomlの[tool.maturin]セクションに記述する。
〜 [tool.maturin] module-name = "hidden_example._hidden_example" python-source = "python" exclude = ["**/__pycache__", "**/*.pyc"]
| 設定名 | 説明 | 備考 |
|---|---|---|
module-name |
モジュール名 | Rustモジュールを不可視にするときに指定する。 |
python-source |
Pythonソースコードのルートディレクトリー | Python/Rust混合構成にするときに指定する。 |
exclude |
wheelファイル生成時に除外するファイル | Python/Rust混合構成にすると、試行時にpythonディレクトリーの下にキャッシュファイルが作られるので、リリースファイルからそれを除外するのに使う。 |
Pythonライブラリー配布用のwheelファイル(拡張子whl)を生成するにはbuildコマンドを使う。
cd example-pyo3 uv run maturin build --release ls target/wheels/
Python/Rust混合構成にしていると、Pythonとして試しに実行したときに、pythonディレクトリーの下にキャッシュファイルが作られる。
デフォルトだと、生成されるwheelファイルの中にこのキャッシュファイルが入ってしまう。
なので、pyproject.tomlでexcludeを設定してキャッシュファイルを除外する。
〜 [tool.maturin] exclude = ["**/__pycache__", "**/*.pyc"]