💬

爆速化するためにpythonからRustを呼び出そう!

2022/01/29に公開

実装動画

https://www.youtube.com/watch?v=65_7uUGYq-U

Rustで作成したライブラリをpythonで呼ぶ方法

PyO3を利用するには、ツールチェインのnightly版をインストールする必要があります。

rustup install nightly 
rustup default nightly 
rustup toolchain list

Cargo.tomlにPyO3の依存関係を追記します。

[lib]
name = "eratosthenes"
crate-type = ["cdylib"]

[dependencies.pyo3]
version = "0.13.2"
features = ["extension-module"]

ダイナミックライブラリを作成するために、--releaseをつけてビルドします。

cargo build --release

もし以下の様にエラーが出る場合は、バージョンを新しくすることで解決できる可能性があります。
参考:https://github.com/rust-osdev/x86_64/issues/234

#![cfg_attr(feature = "const_fn", feature(const_in_array_repeat_expressions))]
                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ feature has been removed

cargo build --releaseを実行すると、target/release内にWindowsであれば.dll,
Linuxであれば.so、Macであれば.dylibが作成されます。
作成されたファイルを以下対応拡張子に変更し、利用するpythonスクリプトと同じディレクトリに格納することでpythonで利用することができます

OS --releaseで作成されるファイル pythonで利用するために
Windows .dll .pyd
Mac .dylib .so
Linux .so .so

Discussion