以前、習作として、Rust で書いた形態素解析器を PyO3 で Python から呼べるようにしたパッケージを書いた。
そろそろ、 setup.py をやめて pyproject.toml にしようかなぁと思ったら、時代は setuptools-rust から maturin に変わっていた。
無事、pyproject.toml を書いて、 setup.py を削除したが、setuptools を使わない pyproject.toml を初めて書いた。
venv 環境で
pip install maturin
としたら
pip install -e .
でインプレースにインストール(ビルド)できて
maturin sdist
でソースパッケージができる。
maturin build
で wheel 作れる。
ただ、MANIFEST.in を読まないらしく、(でも、.gitignoreは読むらしく)
必要なファイル以外を除外するのに .gitignore を修正して pyproject.toml に exclude を指定した。
(本当は、パッケージに含めるファイルだけ指定したいのだが・・・)
なんか、もっといいやり方がある気がするけど、今回はここまで。
v0.3.1 として、リリースした。
https://pypi.org/project/pyawabi/
Rust の拡張を含むパッケージのプロジェクトを作る時も maturin を使うと良さそう。
最初に Rust で拡張を書こうかと思った時には PyO3 の他にもいくつか同様の目的のライブラリあったが、すっかり PyO3 がデファクトスタンダードになったらしい。
この記事へのコメント