【ROOT/pyROOT】CERN ROOTをPython3(anaconda)で実行できるようにインストールする(2020版)
Python3でROOT6を使えないという話ですが、実は使えます。
====
はじめに
ROOT6は非常に強力なフレームワークですが、Pythonに関してはpython2でしか利用できないことがちょっとした問題でした。
しかし、最近ちらほらとPython3からも実行することが可能だという情報が入ってきたため、私も情報提供します。
※追記(2020.5.8)
twitterやエゴサとかをやってないので気付かなかったのですが、この記事を見ている人がいることを知りました!ありがとうございます!
なのでちょっと記事を再編しておきました。
開発環境
- Windows10 Pro
- WSL (Ubuntu 18.04)
- pyenv (anaconda3-4.3.1) : Python3.6
(なんかTensorFlowが3.7以降はofficialには使えないという話。。。)
※追記
- WSL(Ubuntu 16.04)
- deepin
でも動作を確認
ROOT6のダウンロードとインストール
root.cern.ch
よりバージョンを選ぶ。
- Source distribution
- Binary distribution
がありますが、Source distributionをインストールすること。
今回、私はroot_v6.16.00.source.tar.gzを選択しました。
※追記(2020.5.8)
rootの最新版v6.20.04はうまくビルドができないみたいです。
https://root-forum.cern.ch/t/dificulty-building-root-on-ubuntu-wsl/38699/16
このフォーラムを見ているとv6.18.04ではbuild fineとのことです。
なのでそれ以前のバージョンをインストールすること。
以下のようにダウンロード⇒展開しましょう。
$ cd ~ $ curl -O https://root.cern/download/root_v6.16.00.source.tar.gz $ cd /usr/local/ $ sudo tar zxvf ~/root_v6.16.00.source.tar.gz
ここまでで展開まで完了です。
次はcmakeします。
cmakeが古い場合は新しくしましょう。
dandy-tech.hatenablog.jp
以下のようにオプションを加えてcmakeします。
$ sudo mkdir ./root_v6.16.00/mybuild $ cd /root_v6.16.00/mybuild/ $ pwd /usr/local/root_v6.16.00/mybuild/ $ sudo cmake ../ \ -Dpython3=On \ -DPYTHON_EXECUTABLE=/home/username/.pyenv/versions/anaconda3-4.3.1/bin/python3.6 \ -DPYTHON_INCLUDE_DIR=/home/username/.pyenv/versions/anaconda3-4.3.1/include/python3.6m \ -DPYTHON_LIBRARY=/home/username/.pyenv/versions/anaconda3-4.3.1/lib/libpython3.6m.so.1.0
次はmakeします。
sudo make -j 8
ここからはしばらくかかります。
~/.bashrc
に以下の5行を追加します。
export PATH="/home/username/.pyenv/versions/anaconda3-4.3.1/bin:$PATH" source /usr/local/root-6.16.00/mybuild/bin/thisroot.sh export PATH="/usr/local/root-6.16.00/mybuild/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/root-6.16.00/mybuild/lib:$LD_LIBRARY_PATH" export PYTHONPATH="/usr/local/root-6.16.00/mybuild/lib:$PYTHONPATH"
ここまで出来たらターミナルを一度立ち上げなおしてから、jupyterを起動します。
$ jupyter notebook
カーネルはpython3を選択し、以下のようにROOTをimportします。
うまくビルドができていれば以下のようになります。
gistd4c997a7dc0575951902e3cc293e9ccc
また、以下のようなエラーが出ることがあります。
gista9854a0124b5e9481d907d61764b33ca
このエラーに関しては今回カーネルに使用したanaconda3ではpython3.6であり、ライブラリに一部古いものが含まれているせいです。
おそらく最新のものではこのエラーは出ないのかと思います。
GLIBCXX_3.4.20がanaconda3のライブラリにあるか確認します。
$ strings /home/username/.pyenv/versions/anaconda3-4.3.1/lib/python3.6/site-packages/zmq/backend/cython/../../../../.././libstdc++.so.6 | grep GLIBCXX
もしなければ、以下のようにcondaをupdateして、パッケージインストールすると解決します。
$ conda update --prefix /home/username/.pyenv/versions/anaconda3-4.3.1 anaconda $ conda install libgcc
これでpython3でコーディングできます。やったね!
今回はここまで。
参考
- 先輩
- ROOT Forumの皆さん:https://root-forum.cern.ch/t/guide-root-6-anaconda-3-6/28395
- 名古屋大学、奥村曉 先生の資料:https://github.com/akira-okumura/RHEA/releases
ありがとうございます。