ochubar / SRW

Synchrotron Radiation Workshop
Other
86 stars 70 forks source link

Error when using srw_python in Spyder (with IPython Console) #29

Open wcgrizolli opened 4 years ago

wcgrizolli commented 4 years ago

Hi all

There a problem with the uti_plot_matplotlib.py that prevents me from using SRW in Spyder (currently using Spyder 4.1.4). I actually think the problem is with IPython, which is the new console for Spyder for a while now.

This is the error in Spyder:

Traceback (most recent call last):
  File "C:\Users\LabviewID\Miniconda3\lib\site-packages\oasys_srw\uti_plot.py", line 57, in uti_plot_init
    _backend = uti_plot_matplotlib.Backend(backend, fname_format)
  File "C:\Users\LabviewID\Miniconda3\lib\site-packages\oasys_srw\uti_plot_matplotlib.py", line 26, in __init__
    backend = self._init_ipython(backend)
  File "C:\Users\LabviewID\Miniconda3\lib\site-packages\oasys_srw\uti_plot_matplotlib.py", line 592, in _init_ipython
    if backend == uti_plot.DEFAULT_BACKEND:
NameError: name 'uti_plot' is not defined
QT5Agg: unable to import specified backend (or its dependency); no plots
Traceback (most recent call last):

I'm using trough Oasys, but I tracked down the problem to uti_plot_matplotlib.py. I found a workaround that I want to suggest. The line

https://github.com/ochubar/SRW/blob/d8eea70243caa7cb55bab61be65bf6dbfbc2c1b0/env/work/srw_python/uti_plot_matplotlib.py#L724

is replaced by

if any('SPYDER' in name for name in os.environ):
    pass
else:
    get_ipython().magic('matplotlib ' + b)