Matplotlib on pycharm with remote ssh intepreter

I am using pycharm with a remote interpreter.

When I try to use matplotlib, I get the following error:

>>> import matplotlib.pyplot as plt Backend TkAgg is interactive backend. Turning interactive mode on. Failed to enable GUI event loop integration for 'tk' Traceback (most recent call last): File "/home/donbeo/.pycharm_helpers/pydev/pydev_console_utils.py", line 498, in do_enable_gui enable_gui(guiname) File "/home/donbeo/.pycharm_helpers/pydev/pydev_ipython/inputhook.py", line 509, in enable_gui return gui_hook(app) File "/home/donbeo/.pycharm_helpers/pydev/pydev_ipython/inputhook.py", line 262, in enable_tk app = _TK.Tk() File "/usr/lib/python3.4/tkinter/__init__.py", line 1808, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: no display name and no $DISPLAY environment variable >>> plt.plot([1,2,3]) Traceback (most recent call last): File "/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py", line 2821, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-6-e426dd61f8f7>", line 1, in <module> plt.plot([1,2,3]) File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 2980, in plot ax = gca() File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 803, in gca ax = gcf().gca(**kwargs) File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 450, in gcf return figure() File "/usr/lib/python3/dist-packages/matplotlib/pyplot.py", line 423, in figure **kwargs) File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 79, in new_figure_manager return new_figure_manager_given_figure(num, figure) File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 87, in new_figure_manager_given_figure window = Tk.Tk() File "/usr/lib/python3.4/tkinter/__init__.py", line 1808, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: no display name and no $DISPLAY environment variable >>> plt.show() 

How can i decide?

+8
python matplotlib ssh pycharm
source share
2 answers

First you need to forward the X11 connections to the local computer ( ssh -X ... for linux, for windows you can use VcXsrv and set up forwarding in your ssh client).

Then set the DISPLAY environment variable in your startup configuration, as described here: https://stackoverflow.com/a/168778/

After that, plt.show() display the graph on your local machine.

+3
source share

I had the same problem and fixed it by switching to a non-interactive backend:

 import matplotlib matplotlib.use('Agg') 
+2
source share

All Articles