PyStanのインストール方法(Windows)
はじめに
- Prophetを使いたいが、PyStanが必要。
- 2022/3/30時点でPyStan 3以上はWindows非対応、LinuxとMacOSに対応。
- ProphetはPyStan2.19.1.1までに対応。
- C++コンパイラが必要(VC++ 14以上またはgcc9.0以上)
- WindowsではAnaconda環境でしか上手くインストールできない。(頑張ればインストールできるかもしれないが私は無理でした)
- pipと混ぜると危険らしいので、原則condaでインストールをすすめる。
環境
インストール
- 参考:
1. チャンネルの確認
- チャンネルとは...
さまざまなパッケージ(ライブラリ)を取得する先?でいいのかな。
conda-forgeというチャンネルがなんか良さげということらしい。
まず、Anaconda Promptを管理者権限で起動する。
(こういう環境構築系は管理者権限でやれと偉い人が言っていた気がする。)
確認コマンド:
conda config --get channels
実行結果:
--add channels 'defaults' # lowest priority
defaultが設定されている。 そこで、conda-forgeを追加する。
チャンネル追加コマンド:
conda config --append channels conda-forge
再度確認すると、
--add channels 'conda-forge' # lowest priority --add channels 'defaults' # highest priority
conda-forgeの追加に成功した。
2. 仮想環境の作成。
conda create -n 仮想環境の名前 python=x.x
参考記事と同様にstanという名前にする。
また、pythonのバージョンは、PyStanやProphetのがpython3.7以上に対応している。
python --version
コマンドで確認するとPython 3.9.7らしいので、仮想環境もこれに合わせてみた。
(追記:ProphetはPython3.9以上非対応)
conda create -n stan python=3.7
途中でProceed ([y]/n)?
ときかれるのでy
で進める。
以降の手順でもよく聞かれるので同様に進める。
また、Python 3.7系の最新版へのアップデートが含まれるので、今回の例ではPython 3.7.13がインストールされた。
仮想環境が出来上がると、次のコマンド実行し、仮想環境に入る。
conda activate stan
すると、コンソールの表記が
(base)C:\User\username>
(base)~
だったのが
(stan)C:\User\username>
(仮想環境名)~
に変わる。
3. パッケージのインストール
ここからパッケージをインストールしていく。 PyStanにはCythonとNumpyが必要なので、先にこの2つをインストールする。
conda install Cython Numpy
PyStanはProphetが2.19.1.1までしか対応していないのでバージョンを指定してインストールする。
conda install pystan==2.19.1.1
さらに
conda install matplotlib jupyter
までインストールしたところで、他に必要なものがあればインストールしておく。 scipyやpandasはいつのまにかインストールされていた。
conda install libpython m2w64-toolchain -c msys2
その後、Pythonのパス配下のコンフィグファイルを編集する。
今回の場合、C:\Users\ユーザ名\anaconda3\Lib\distutils
の
distutils.cfg
を編集する。(なければ新規作成する。)
そして中身には
[build] compiler=mingw32
を記述する。
4. jupyter notebookでの仮想環境の切り替え設定
仮想環境に入ったままなら一旦出る。
conda deactivate
そして以下のコマンドを実行する。
pip install environment_kernels
jupyter notebook --generate-config
C:\Users\ユーザ名\.jupyter\
にjupyter_notebook_config.py
というファイルが作られている。
これをテキストエディタで開き、次の記述を追加する。
追記内容:
c.NotebookApp.kernel_spec_manager_class='environment_kernels.EnvironmentKernelSpecManager'
c.EnvironmentKernelSpecManager.conda_env_dirs=['C:\Users\ユーザ名\Anaconda3\envs']
このconda_env_dirs
のパスを確認するには以下のコマンドで確認する。
conda info -e
結果は
# conda environments: # base C:\Users\ユーザ名\anaconda3 stan * C:\Users\ユーザ名\anaconda3\envs\stan
というように作成したstanのパスを確認する。 これを踏まえ、追記すると以下のようになる。
#------------------------------------------------------------------------------ # KernelSpecManager(LoggingConfigurable) configuration #------------------------------------------------------------------------------ ## If there is no Python kernelspec registered and the IPython kernel is # available, ensure it is added to the spec list. #c.KernelSpecManager.ensure_native_kernel = True c.NotebookApp.kernel_spec_manager_class='environment_kernels.EnvironmentKernelSpecManager' c.EnvironmentKernelSpecManager.conda_env_dirs=['C:\Users\ユーザ名\Anaconda3\envs']
以上でインストールは終了。
動作確認
Jupyter Notbookを起動しを切り替えればいいらしいが、 よくわからないのでAnaconda Navigatorから切り替えて起動すればOk。 画面上部のApplications on の項目に先程作成した「stan」が選べるはずなので、選択する。 そしてJupyter Notbookを起動する。 適当なサンプルプログラムを実行して確認する。
from pystan import StanModel model = StanModel(model_code="parameters {real y;} model {y ~ normal(0,1);}") print(model.sampling().extract()["y"].mean())
C++コンパイルに多少時間かかるらしいので、暫く待つと結果が返ってくる。
おわり
- PyStanまでの道のりが長いので一旦ここまでで区切ります。
Prophetは別記事でまとめようと思います。
- (追記:Prophetのインストール方法)
- (追記:Prophetのインストール方法)
ちなみに、MacはAnaconda使わなくても割とすんなりProphetまでインストールできました。これもいずれまとめようと思います。