Pypy on osx 10.11.6 (el cap) - Fatal in TClingClassInfo on import

I am curious if anyone has tips for getting ROOT to work in pypy on osx?

I am using Root v6.06.02, built from source. In normal Python (v2.7.10), I can import ROOT and use it just fine.

In pypy (versions below), however, TClingClassInfo crashes out with a Fatal saying that Init(tagnum) should not be called. I assume this is being called via a constructor that should also not be used.

I installed PyPy-cppyy-backend v6.10.0.0 and added /usr/local/lib/pypy/site-packages/cppyy_backend/lib to my LD_LIBRARY_PATH.

I get the following error upon importing ROOT in pypy:

correed@... ~> pypy
Python 2.7.13 (1aa2d8e03cdfab54b7121e93fda7e98ea88a30bf, Apr 03 2017, 21:27:28)
[PyPy 5.7.1 with GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>> import ROOT
Fatal in <TClingClassInfo::Init(tagnum)>: Should no longer be called
aborting

Advice?

Thanks!

Hi,

presently PyPy is not fully supported. We are eager to share experiences about it and to receive patches!

Cheers,
D

You are mixing two ROOT installations. The versioning in PyPy-cppyy-backend of ‘v6.10.0.0’ means it is build against ROOT 6.10/00, so get the other one out of your paths or install 6.10/00. There is an older cppyy-backend for v6.06/09 as well, which might work with 6.06/02.

That said, I forget where ‘ROOT.py’ stood in terms of being able to be imported into pypy. In particular, I forget whether it handles gApplication correctly. It might, but you may well be better off by using cppyy directly. ROOT classes will be accessible under cppyy.gbl and also importable from there (through the normal class loader mechanism).

Whether you use ROOT.py or cppyy.gbl, you will lack certain ROOT-specific pythonizations that live in libPyROOT.so (which you may accidentally load through .rootmap files, but it won’t be usable).

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.