S-JIS[2026-02-22]

Rust PyO3 maturinメモ

Rustpyo3のmaturinのメモ。


概要

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プロジェクトの作成

PyO3プロジェクトをmaturinで作成するには、newコマンドを使う。

newコマンドの引数として、作成するプロジェクト名を指定する。

uv run maturin new example-pyo3

途中でどのライブラリーを使うか聞かれるので、pyo3を選ぶ。


maturinの設定

maturinの設定は、pyproject.tomlの[tool.maturin]セクションに記述する。

PyO3プロジェクト/pyproject.toml:

[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ディレクトリーの下にキャッシュファイルが作られるので、リリースファイルからそれを除外するのに使う。

wheelファイルの生成

Pythonライブラリー配布用のwheelファイル(拡張子whl)を生成するにはbuildコマンドを使う。

cd example-pyo3
uv run maturin build --release

ls target/wheels/

キャッシュファイルの除外

Python/Rust混合構成にしていると、Pythonとして試しに実行したときに、pythonディレクトリーの下にキャッシュファイルが作られる。

デフォルトだと、生成されるwheelファイルの中にこのキャッシュファイルが入ってしまう。
なので、pyproject.tomlでexcludeを設定してキャッシュファイルを除外する。

PyO3プロジェクト/pyproject.toml:

[tool.maturin]
exclude = ["**/__pycache__", "**/*.pyc"]

pyo3へ戻る / Rustへ戻る / 技術メモへ戻る
メールの送信先:ひしだま