Python and ROOT on OS X
I don’t find myself using ROOT much on my home machine, but when I do there’s usually something broken.
In this case, it was when trying to use PyROOT, a ROOT interface for Python, that this error made my day:
>>> import ROOT
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/root/lib/ROOT.py", line 85, in <module>
import libPyROOT as _root
ImportError: dlopen(/usr/local/root/lib/libPyROOT.so, 2): Library not loaded: @rpath/libRIO.so
Referenced from: /usr/local/root/lib/libPyROOT.so
Reason: image not found
This is using the install as documented in a previous post.
The problem is that the library Python loads can’t find another library it needs. To fix this, the
DYLD_LIBRARY_PATH variable needs to be set:
This can be executed directly in the shell or placed in a
This solution is not without fault. Namely, whenever one runs a command with
sudo, the following warning appears:
dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/sudo) is setuid or setgid
This is a well known issue with OS X 10.8 (Mountain Lion), complete with a bug report.
At least one workaround is available, but for now I put up with the message in the shell I want to use PyROOT in, manually setting
DYLD_LIBRARY_PATH when needed.