2025年12月時点で PyO3 が Python 3.14 を正式サポートしていないので Python 3.13 を利用しました。
cargo new --lib my_rust_py
cd my_rust_py[package]
name = "my_rust_py"
version = "0.1.0"
edition = "2021"
[lib]
name = "my_rust_py"
crate-type = ["cdylib"]
[dependencies]
pyo3 = { version = "0.22", features = ["extension-module"] }
Python 環境をアクティベートします。
uv venv .venv
source .venv/bin/activate
pip install maturin
use pyo3::prelude::*;
/// 普通の Rust 関数
fn rust_add(a: i64, b: i64) -> i64 {
a + b
}
/// Python から呼び出せる関数
#[pyfunction]
fn add(a: i64, b: i64) -> PyResult<i64> {
Ok(rust_add(a, b))
}
/// Python モジュールの定義
#[pymodule]
fn my_rust_py(m: &Bound<'_, PyModule>) -> PyResult<()> {
// 関数をモジュールに登録
m.add_function(wrap_pyfunction!(add, m)?)?;
Ok(())
}
uv venv .venv
source .venv/bin/activate
pip install maturin
プロジェクトのルートで次のコマンドを実行すれば「現在アクティブな Python 環境」に my_rust_py がインストールされる
maturin develop
REPL で確認する。
>>> import my_rust_py
>>> my_rust_py.add(3, 5)
8
次のコマンドで target/wheels/ に wheel が作成されます。
maturin build --release
次のコマンドでインストールされます。
pip install target/wheels/my_rust_py-0.1.0-...whl