StanをmacOS Sequoiaにインストール:意外にハマる

投稿者: | 2025年1月20日

macOSにStanをインストールする方法

機械学習を基礎から学んでいると、ベイズ統計を避けて通るわけにはいかない。Stanはベイズ統計モデルの推論を行うための強力なプラットフォームで、RとPythonの両方で利用できる。この記事では、macOSにStanをインストールする方法を説明する。

Stanを利用するにはPythonまたはRが必要で、人によっては両方入れているかも知れない。本稿ではいずれの環境にも対応する。

準備

  1. Xcodeとそのコマンドラインツールをインストール

    Stan本体はC++で記述されているため、Xcode(と対応するコマンドラインツール)が必要

  2. Stanを利用するPython, Rをインストール

    既に入れているケースがほとんどだろう

  3. Anacondaをインストール

    Rを使う場合でもAnacondaを利用して入れるのが簡単

Stanのインストール

Stanの本家サイトのGetting Startedにいき、必要なものをインストールする。

ターミナルを起動した時、プロンプトが

(base) userId@your-mac present-directory %

のようになっていれば、Anacondaが有効になっている。この状態でサイトに指示された通り、インストールすれば良いのだが、macOS Sequoiaでは

Error while loading conda entry point: conda-libmamba-solver (dlopen(/opt/anaconda3/lib/python3.12/site-packages/libmambapy/bindings.cpython-312-darwin.so, 0x0002): Library not loaded: @rpath/libarchive.20.dylib
  Referenced from: <496442DC-0EDE-3705-A2B5-401A4FC0D733> /opt/anaconda3/lib/libmamba.2.0.0.dylib
  Reason: tried: '/opt/anaconda3/lib/libarchive.20.dylib' (no such file), '/opt/anaconda3/lib/python3.12/site-packages/libmambapy/../../../libarchive.20.dylib' (no such file), '/opt/anaconda3/lib/python3.12/site-packages/libmambapy/../../../libarchive.20.dylib' (no such file), '/opt/anaconda3/bin/../lib/libarchive.20.dylib' (no such file), '/opt/anaconda3/bin/../lib/libarchive.20.dylib' (no such file), '/usr/local/lib/libarchive.20.dylib' (no such file), '/usr/lib/libarchive.20.dylib' (no such file, not in dyld cache))

CondaValueError: You have chosen a non-default solver backend (libmamba) but it was not recognized. Choose one of: classic

のようなエラーが出て困った。

対策として

環境変数に

export DYLD_LIBRARY_PATH="/opt/anaconda3/lib:$DYLD_LIBRARY_PATH"
export LD_LIBRARY_PATH="/opt/anaconda3/lib:$LD_LIBRARY_PATH"

を追加、さらに

conda install --solver=classic conda-forge::conda-libmamba-solver conda-forge::libmamba conda-forge::libmambapy conda-forge::libarchive

を実行することでエラーが解消した。

念の為、エラー解消時の環境をバックアップ(リストア)する方法も書いておく。

conda env export > environment.yml
conda env create -f environment.yml

これでエラーが出たパッケージのインストールを再度実行してみて欲しい。

Preparing transaction: done                                                                                           
Verifying transaction: done
Executing transaction: done

のように表示され、うまくいくはずだ。

蛇足だが、condaは依存関係にコンフリクトを起こすことがあるので定期的にメンテしておいた方がいいだろう。やり方は以下の通り。

conda update --all
conda clean --all

コメントを残す