If directly or indirectly through any other package, matplotlib is imported, then the output plot is shown, but freezes, i.e. one can not zoom axis etc. Unfortunately some not so well designed 3rd party mathematical packages in python have some kind of visualization deep in their code, which imports matplotlib. So even if I don’t need matplotlib, it gets imported automatically.
To reproduce the error, I just took the small sin(x)/x example code on the PyROOT main page https://root.cern.ch/pyroot.
Added
at the beginning, it freezes. Commented out, it works.
Appreciate any ideas…
p.s. Using Python 3.4.5 +readline, root v. 6.06/08 +python34 from Macports on OSX 10.11.6 El Capitan
Two graphic interfaces computing for the main loop is probably the source of the problem. I’ll try to reproduce it and see whether there is a workaround.
AFAIK, a lot of folks are happily mixing mathplotlib and PyROOT. PyROOT can use either a separate progress thread or the input hook. See whether it makes a difference:import ROOT
ROOT.PyConfig.StartGuiThread = 'inputhook'for input hook, or:import ROOT
ROOT.PyConfig.StartGuiThread = Truefor progress thread.
It seems that you are using python shell itself. I can also reproduce the behaviour you mention. Both freeze. The same happens if you take a tutorial example form ROOT distribution, e.g. graph.py, add a single line above it:
import matplotlib.pyplot as plt
then try to load it within python3 shell:
exec(open("./graph.py").read())
This also freezes.
But it turns out that all the problems are gone using iPython shell instead of python shell itself. There both of your codes will not freeze and also running:
run graph.py
also won’t freeze.
This means that my problem in the original post seems to have been solved as well.
btw. I am using root6 @6.10.00_2+cocoa+cxx14+cxx17+gcc6+graphviz+gsl+http+minuit2+opengl+python34+roofit+soversion+ssl+tmva+xml and python34 @3.4.6_1+readline on OSX El Capitan.