LoginSignup
21
8

More than 3 years have passed since last update.

Windows に Anaconda なしで PyStan をインストールする

Last updated at Posted at 2020-11-10

Windows で PyStan を動かしたい場合は Anaconda を使うのが最も簡単で、公式ドキュメントにも Anaconda を使用したインストール方法が記載されている。
PyStan on Windows — PyStan documentation

Anaconda を使わない場合の次の選択肢としては、WSL 2 などを使って Linux 仮想環境の上で PyStan を動かすことを検討するだろう。

しかしそれすらもかなわない、 Anaconda も Linux 仮想環境も使えない Windows で PyStan を動かしたい場合 はどうしたらいいのか?

環境

Amazon EC2 で立てた Windows Server 2019 で試したが、Windows 10 でもだいたい同じだろう。(適当)

あまり関係はなさそうだけど、コマンド実行するときは PowerShell を使っている。

Python をインストールする

まずは Python をインストールする。

今回は Python 3.8.6 をインストールした。
普通にインストーラをダウンロードしてきてポチポチするだけなので割愛する。

Python Release Python 3.8.6 | Python.org

C++ コンパイラをインストールする

PyStan は実行時に C++ コンパイラを使うのでインストールする必要がある。

公式ドキュメントによると「MSVC compiler is not supported.」とのことだったのだけれど、MinGW-w64 で試してみてもうまくいかなかった・・・。1
そしてサポートされていないらしい Microsoft Visual C++ の方ではうまく動いたので、今回はこちらの方法について書く。

ダウンロードページから「Build Tools for Visual Studio 2019」インストーラをダウンロードして実行する。(下の方のメニューにある)
Download Visual Studio 2019 for Windows & Mac

インストーラが起動したら「C++ Build Tool」にチェックを入れてインストールする。

Cython と NumPy をインストールする

PyStan のインストール時に必要になるので、あらかじめ Cython と NumPy をインストールしておく。

$ pip install cython numpy

PyStan をインストールする

2020年11月時点での最新版は 2.19 だが、うまくいかなかったので、2.17 を入れる。2

$ pip install pystan==2.17.1.0

動作確認

簡単なサンプルコードを実行してみる。

from pystan import StanModel

model = StanModel(model_code="parameters {real y;} model {y ~ normal(0,1);}")
print(model.sampling().extract()["y"].mean())

エラー無く 0 っぽい数値が表示されれば成功。

おわり

Windows なにもわからない。

そしてこの記事は一体誰に需要があるのか???


  1. MinGW-w64 をインストールしてパスを通して distutils.cfg でビルド時の compiler=mingw32 オプションも設定したのだけど、他に何が必要だったのだろうか。 

  2. pystan==2.19 だとインストールはすぐに終わるが、import すると「ImportError: DLL load failed while importing _api」などとエラーが出て使えない。インストール時にビルドが実行されていないように見えるが、詳細はわからない。 

21
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
8