Anaconda で ROOT 入れたり
Anaconda 環境に ROOT を入れるときのメモ。1 年前に Mojave でやったときとちょこちょこ変わっているので、2020 年 6 月現在の以下の環境を想定。
まず、Mac 用の Anaconda を落としてくる。 https://repo.anaconda.com/archive/Anaconda3-2020.02-MacOSX-x86_64.sh
適当に答えて進める。
$ chmod +x Downloads/Anaconda3-2020.02-MacOSX-x86_64.sh $ ./Downloads/Anaconda3-2020.02-MacOSX-x86_64.sh
自動的に .zshrc
に Anaconda の設定が書き込まれるのが好きじゃないので、自分の場合は関数で括って好きなときにAnaconda 環境に入るようにしている。
conda_init(){ # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/Users/oxon/anaconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/Users/oxon/anaconda3/etc/profile.d/conda.sh" ]; then . "/Users/oxon/anaconda3/etc/profile.d/conda.sh" else export PATH="/Users/oxon/anaconda3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<< }
4.8.3 に update する。
$ conda_init (base) $ conda update -n base -c defaults conda
好きな環境、例えば sstcam_root
という環境を作る。このとき、-c conda-forge
で channel を指定する必要あり。ROOT はここにあるので。
(base) $ conda create -n sstcam_root root -c conda-forge (base) $ conda activate sstcam_root (sstcam_root) $ which root.exe /Users/oxon/anaconda3/envs/sstcam_root/bin/root.exe (sstcam_root) $ root root [0] .q
以前は MacOSX10.9.sdk とかを落としてくる必要があったのだけど、今は要らなくなった。なので、Anaconda 側で Xcode についてくる SDK を勝手に環境変数に設定してくれる。これは base
のときは空っぽで、次のように ROOT 環境のほうだけ。10.15 が指定されている。
$ conda_init (base) $ echo $CONDA_BUILD_SYSROOT (base) $ conda activate sstcam_root (sstcam_root) $ echo $CONDA_BUILD_SYSROOT /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk (sstcam_root) $ ll $CONDA_BUILD_SYSROOT lrwxr-xr-x 1 root wheel 15 Mar 25 11:24 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -> MacOSX10.15.sdk
これで、ACLiC も問題なく動く。ACLiC を動かすためにも、以前は SDK を自分で用意する必要があった。
(sstcam_root) $ root root [0] .x aho.C+ Info in <TMacOSXSystem::ACLiC>: creating shared library /Users/oxon/./aho_C.so
Anaconda で入れるものではない library を CMake で build するとき、引数を追加する必要がある。
docs.conda.io
ここを読むと、次のようにやる必要があるらしいのだけど(これは clang
が Anaconda 環境のものが使用されてしまうため)、
(sstcam_root)$ cmake ../source -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DCMAKE_OSX_SYSROOT=$CONDA_BUILD_SYSROOT
実際には次のコマンドでちゃんと動いた。CMake のバージョンによるのかもしれない。
(sstcam_root)$ cmake ../source -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX
SYSROOT
の ROOT
は ROOT と関係ない。
この環境で例えば他に Python 関係のものを追加したい場合、conda-forge
から入れるようにする必要がある。
(sstcam_root) $ conda config --env --add channels conda-forge (sstcam_root) $ conda install scipy astropy matplotlib tqdm pandas numba cython scikit-learn