PyROOTを起動した時にno current threadというエラーがでる
問題
もうROOTを使うこともあまりないのですが、いざ必要になってPyROOTを起動しようとしたときに、「Fatal Python error: PyThreadState_Get: no current thread」とでて、
1
2
3
4
5
6
7
> python
Python 2.7.12 (default, Jun 29 2016, 14:05:02)
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import ROOT
Fatal Python error: PyThreadState_Get: no current thread
zsh: abort python
のようなエラーがでるとともに、「Python quit unexpectedly」というダイアログが出てPythonが終了してしまう問題が起きました。
原因
- ROOTをインストールして以降、HomebrewでOS X付属のもの(/usr/bin/python)とは違うpythonをインストールした。
- デフォルトで起動するpythonを、Homebrewで入れたものにしていた。つまり /usr/local/bin/python になっていた。
- ROOTに付属しているPyROOTは、OS X付属のpython用にビルドされているので、ライブラリを読み込む時の不整合で上記のエラーが出る。
解決法
- OS X付属のPythonを使う。/usr/bin/pythonからimportすると、以下のようにエラーがでない。 ```python > /usr/bin/python Python 2.7.10 (default, Oct 23 2015, 19:19:21) [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import ROOT >>> ```
- ROOTをソースコードから自分でビルドし直す。
暫定的に使えればいいのなら、方法1で問題なさそう。ずっと使うなら、ちゃんとバージョンを合せてビルドしなおすほうが良いですよね。