How to use Use the Python PyROOT Interpreter ?

PyROOT is a Python extension module that allows the user to interact with any ROOT class from the Python interpreter. This is done generically using the ROOT dictionary, therefore there is no need to generate any Python wrapper code to include new ROOT classes. At the same time PyROOT offers the possibility to execute and evaluate any Python command or start a Python shell from the ROOT/CINT prompt. Further details are available in the PyROOT manual.

Building and installing PyROOT

The user should follow the standard ROOT installation instructions and, if necessary, enable the build of the PyROOT module. A Python version > 2.2 is required, the location of needs to be specified if it is not installed in any of the standard places:

./configure <arch> --enable-python [--with-python-incdir=<dir>] [--with-python-libdir=<dir>]
where the Python include directory should point to the directory containing the Python.h file, and the library directory should contain libpython.x.y.[so][.dll], where 'x' and 'y' are the major and minor version number of Python, respectively. Note that at the end of the configuration, the list of enabled features is printed: make sure that 'python' is listed among them.

If you do not specify the inc and lib directories configure will try to use the environment variable $PYTHONDIR or alternatively will look in the standard locations.

A library called [libPyROOT.dll] will be created in the $ROOTSYS/lib [$ROOTSYS/bin] and a top Python module will be copied to the same place.

Setting up the environment

To work with PyROOT, the LD_LIBRARY_PATH [PATH] and PYTHONPATH need to be set in addition to the standard ROOTSYS:

for Unix platforms


for Windows


Running PyROOT from Python interpreter

The user should make sure that the python command is the one of the installation that has been used to build the PyROOT extension module. The top level Python module is This module imports the extension module [.dll] and does a similar initialization as the ROOT application (i.e. loading common libraries, defining a number of globals, starting a thread to handle GUI events, etc.). This is the main entry point for any Python script using the ROOT classes. An example is as follows:

from ROOT import gROOT, TCanvas, TF1
c1 = TCanvas( 'c1', 'Example with Formula', 200, 10, 700, 500 )
# Create a one dimensional function and draw it
fun1 = TF1( 'fun1', 'abs(sin(x)/x)', 0, 10 )

The user can find a number of examples in $ROOTSYS/tutorials/pyroot. To run them, simply execute the command

python $ROOTSYS/tutorials/pyroot/

Running Python from ROOT/CINT interpreter

A ROOT user can run any Python command and eventually switch to the python prompt from the ROOT/CINT prompt; the interpreter state will be preserved in between calls. Example commands to execute are:

root [0] gSystem-&gt;Load("libPyROOT")
root [1] TPython::Exec( "print 1 + 1" )
root [2] TBrowser *b = (void*)TPython::Eval( "ROOT.TBrowser()" )
(class TObject*)0x8d1daa0
root [3] TPython::Prompt()
>>> i = 2; ^D
root [4] TPython::Prompt()
>>> print i

More detailed examples

See the ATLAS Python tutorials.