pystanが動く環境をpoetryとdockerを使って作ろうとしましたが、僕の使っているM1 macではpystanが依存しているhttpstanのwheelファイルが用意されていないらしく、httpstanを直接buildしてpoetryに読み込ませる羽目になりました。
同じ悩みを持っていた方
dockerコンテナの作成や、poetryプロジェクトの作成は終わっているものとします。
ライブラリのダウンロード
wheelファイルがないライブラリのgithubに行ってライブラリをダウンロードします。
wget https://github.com/stan-dev/httpstan/archive/refs/tags/4.12.0.tar.gz
tar -zxvf 4.12.0.tar.gz
ライブラリのbuild
githubのinstallationに従ってbuildしてwheelを作ります。
cd httpstan-4.12.0
make
httpstanではpoetry buildでwheelを作成します。
python3 -m poetry build
wheelをpoetryに読み込ませる
作成されたwheelをプロジェクト内のpyproject.tomlに読み込ませます。[tools.poetry.dependencies]にはライブラリ名=バージョンが書かれていますが、バージョンの部分を{path}に変えることローカルのwheelを読み込ませることができます。
# 普通にインストールするとpymcのようになる。
pymc = "^5.11.0"
# ローカルのwheelのpathを指定することでローカルから読み込んでくれる
httpstan = {path = "/home/httpstan-4.12.0/dist/httpstan-4.12.0-cp311-cp311-manylinux_2_36_aarch64.whl"}
参考にしたサイト
https://python-poetry.org/docs/dependency-specification/#path-dependencies
目的のライブラリをインストール
依存関係にあるライブラリを読み込ませたので、目的のライブラリをインストールできます。
poetry add pystan
あとがき
前にm1 Macでのtensorflowのインストール方法の記事を書きましたが、CPUのアーキテクチャが違うだけでこれほどまでにめんどくさいと、だんだんイライラしてきます。
お金があればlinux用の端末も買えるのに...