python - 带有远程ssh解释器的pycharm中的matplotlib

标签 python matplotlib ssh 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()

我该如何解决?

最佳答案

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

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

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

关于python - 带有远程ssh解释器的pycharm中的matplotlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31703253/

相关文章:

python - 根据组的子数据框必须包含

python - 从三个列表中绘制热图 : X, Y,强度

python - 如何为 matplotlib 的 drawgreatcircle 函数制作动画?

ssh - 如何通过ssh禁用root密码登录,同时允许基于证书的登录

svn - 我可以在没有 svnserve 的情况下通过 SSH 进行 SVN 吗?

python - django Manytomany 对象的字段返回空

python - 如何杀死 celery 工作进程以重新启动进程

python - 使用 matplotlib 为 svg 线图创建工具提示

python - 无法使用 rotate_deg_around() 围绕特定点旋转 matplotlib 补丁对象

git push 在本地 gitlab 存储库上失败