Don*_*beo 13 python ssh matplotlib pycharm
我正在使用pycharm与远程解释器.
当我尝试使用matplotlib时,我收到以下错误:
>>> 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()
Run Code Online (Sandbox Code Playgroud)
我怎么解决?
我遇到了同样的问题,并通过更改为非交互式后端来解决此问题:
import matplotlib
matplotlib.use('Agg')
Run Code Online (Sandbox Code Playgroud)
小智 6
首先,您需要将 X11 连接转发到本地计算机(ssh -X ...对于 linux,对于 Windows,您可以使用VcXsrv并在 ssh 客户端中设置转发)。
接下来,DISPLAY按照此处所述在运行配置中设置环境变量:https : //stackoverflow.com/a/32945380/2708478
之后,plt.show()将在您的本地机器上显示绘图。