概要
Anacondaの従業員200名以上の企業利用が有償化してしばらく経ちます.
今までは普通のPythonでのらりくらりとやっていけていた.
しかしベイズ統計の勉強したくてpymc3を導入しようとするとすべてAnaconda前提でインストール方法が書かれている.
本体はpipでインストールせよとのことだったので普通のpythonでもいけるんじゃね?と思ったがダメそう?という感じ.
結論から言うとMinicondaとかWSL使うといけそうだということ.この辺りは後述.
環境
やったこと
とりあえず下記を参考にpipでどこまでやれるかやってみた.
必要なパッケージとしてmkl-service,libpython,m2w64-toolchain,scipy,matplotlib,pandasがあるのだが,このなかでm2w64-toolchainだけがpipでのインストールができなかった.
とりあえずm2w64-toolchain以外をインストールして
pip install pymc3
を実行.インストールは一応できた.
しかし下記にあるサンプルコードは動かず.
具体的には
with pm.Model() as model: # 事前分布の定義 theta = pm.Beta('theta', 1, 1) #ここでエラー # 尤度の定義 data = pm.Bernoulli('data', theta, observed=tosses) # 事後分布からデータ生成 trace = pm.sample(return_inferencedata=True)
の部分.エラー内容はCompilation failed (return status=1)~とか返ってきたので,pymc3実行時のコンパイル作業ができていないようだ.
じゃあコンパイラに認識させればいいのか?と思いmingw64をインストールしてパスを通してみたがエラーは解消されず.
解決策が見つかったら追記するかもしれないけど,たぶん無理かなぁ…
WSL上にUbuntu入れてやってみる
所謂Windows Subsystem for Linux.Windows上でもLinuxが簡単に使えるなんていい時代になったものだ.
導入は以下を参照.
デフォルトがubuntuだったからデフォルトで作ったけど,Almalinuxとかもいけますね.
後は一応pythonの仮想環境を立ち上げておく.がその前に
apt install python3.10-venv
で仮想環境を作るためのvenvをインストールしておく.後はWindows版と同じく適当に仮想環境用のディレクトリを作っておいて,その中で
python3 -m venv [仮想環境名]
とする.仮想環境の有効化は
source [仮想環境名]\bin\acticate
pipでmkl(いらないかも?)とlibpython(いらないかも?)入れて,最後にpymc3をインストール.
ついでにjupyterlabを入れてwindowsのブラウザから操作できるようにする.
jupyterlabにアクセスするときは,WSL環境上でjupyter labを起動後出てくる中で
Or copy and paste one of these URLs: http://localhost:8888/lab?token=e367f4cfe4bff06729f8f560b472a193151cc064105a5187 or http://127.0.0.1:8888/lab?token=e367f4cfe4bff06729f8f560b472a193151cc064105a5187
を探し出す.どちらのURLでもいいのでコピーしてWIndowsのブラウザでアクセスすると開ける.
そして上で使ったテストコードを実行するとなんと通った.
これが一番楽だと思います.(異論は認める)
Anaconda使わないの?
個人利用であれば問題ないんですが,本当は企業内で使いたい.しかし弊社ケチなのでこういうのは投資分回収できるのか問題が出てくる.
Anaconda使えない,pythonじゃ動かない,それじゃどうするのさ?
Miniconda + Conda-forgeで解決?
こちらの記事によると,どうやらAnacondaというよりAnacondaのパッケージを持ってくる先の問題のようだ.
とはいえ下手すると設定したつもりが有償機能使ってることになりかねないので使うのが怖かったんじゃ…個人でやるなら有だと思いますが,団体で使う場合は注意したほうがいいのではと.
まとめ
WSLって神機能では?と思いました.