PyO3
RustとPythonを繋ぐバインディングライブラリ。RustでPythonのネイティブ拡張モジュール(.so/.pyd)を書いてPython側からimportして使うことも、逆にRustのバイナリにPythonインタプリタを埋め込んでPythonコードを呼び出すこともできる。 #rust #python
できること
- RustでPython拡張モジュールを書く — パフォーマンスが要求される処理をRustで実装し、Pythonの通常のモジュールとして公開する。NumPy/Pandas系ライブラリの内部実装や機械学習系ライブラリの高速化レイヤーなどでよく使われる用途。
- RustからPythonを呼び出す — Rustバイナリ内にPythonインタプリタを埋め込み、既存のPython資産(ライブラリ等)をRust側から利用する。
- Python⇔Rustの型変換(
PyObjectとRustの型の相互変換など)を自動でハンドリングしてくれる。
maturin
PyO3を使ったPythonパッケージのビルド・配布にはmaturinというツールが使われるのが一般的。maturin buildでwheelを生成し、PyPIへの配布まで面倒を見てくれる。