【问题标题】:matplotlib on pycharm with remote ssh intepreter带有远程 ssh 解释器的 pycharm 中的 matplotlib
【发布时间】:2015-07-29 14:22:01
【问题描述】:

我正在使用带有远程解释器的 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()

我该如何解决?

【问题讨论】:

  • 我也面临着类似的问题。你能在哪里解决你的问题?
  • 我没有解决。我认为您可以将绘图保存在 ssh 服务器plt.savefig(...)plt.show() 返回错误。
  • 我曾经将它与 putty 和 xming 一起使用。您必须启用 x11 转发,但我无法在 pycharm 中设置它....
  • 问题解决了吗? plt.savefig(...) 不起作用...我只想在远程机器上运行一些测试,将绘图保存为图像并稍后检索它们...
  • 最后我用终端和ssh登录远程机器。然后我在终端内运行emacs。习惯了就好了

标签: python matplotlib ssh pycharm


【解决方案1】:

首先,您需要将 X11 连接转发到您的本地计算机(对于 linux,ssh -X ...,对于 Windows,您可以使用 VcXsrv 并在您的 ssh 客户端中设置转发)。

接下来,在运行配置中设置DISPLAY 环境变量,如下所述:https://stackoverflow.com/a/32945380/2708478

之后,plt.show() 将在您的本地计算机上显示绘图。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并通过更改为非交互式后端来解决它:

    import matplotlib
    matplotlib.use('Agg')
    

    【讨论】:

    • 你需要使用X11显示转发吗?
    • 不,如果您想从远程机器将结果渲染到您的工作站上,您只需要显示转​​发。如果你只是想让它不崩溃,那么这就是你需要做的。
    猜你喜欢
    • 2021-12-12
    • 2019-03-13
    • 2019-10-08
    • 2023-01-30
    • 2016-10-16
    • 1970-01-01
    • 2019-09-29
    • 2019-03-18
    • 2018-09-09
    相关资源
    最近更新 更多