3

我的 LAN 上有一台计算机,我想在其上运行 IPython Notebook 服务器。这台电脑是无头的,所以我只能使用 SSH 访问这台电脑。我试图通过屏幕启动 IPython Notebook,然后分离,但内核重新启动并出现 X 服务器错误。

具体来说,我做了以下事情:

  • SSH 进入远程盒子: ssh -X 1.1.1.1
  • 启动或重新附加到最后一个屏幕:screen -RD
  • 启动笔记本ipython notebook
  • 分离和注销:ctrl-a-d, exit

远程笔记本服务器工作正常,直到我注销,然后尝试创建一个 matplotlib 图。什么时候我得到

Kernel Restarting
The kernel appears to have died. It will restart automatically.

从客户的网络浏览器,和

-c: cannot connect to X server localhost:10.0
2013-08-01 10:28:48.072 [NotebookApp] KernelRestarter: restarting kernel (1/5)
WARNING:root:kernel 6e0f5395-6ba7-44c8-912f-1e736dd66517 restarted

在服务器上。

由于缺乏 X 资源,我注销后笔记本电脑似乎无法绘图。有人对此有解决方案吗?

4

3 回答 3

4

Ipythontraitsui在您使用ssh -X. 当您注销时,ssh 隧道与该 X 会话一起关闭,因此出现错误。如果没有 ssh 隧道,这些情节就无法找到您。

假设您在服务器上没有用于查看绘图等的物理终端,您可以通过告诉 IPython 笔记本显示内联绘图来查看 matplotlib 绘图。请注意,对于当前版本的 ipython,绘图是静态 png。我不确定是否traitsui有办法做这样的事情?

有几种方法可以做到这一点:

  • 导入pylab模块%pylab inline
  • import matplotlib with %matplotlib inline(不确定这在旧版本中是否可用)
  • 运行 ipythonipython notebook --pylab=inline
  • 将 ipython 配置为始终使用 pylab inline:运行,然后在 Ubuntu 上的 ipython 配置文件目录中ipython profile create查找“inline” 。ipython_notebook_config.py~/.config/ipython/profile_default/
于 2013-09-20T01:58:14.697 回答
0
  • SSH 进入远程盒子:ssh -X 1.1.1.1
  • 开始画面:screen -S ipython_process
  • 启动笔记本:ipython notebook --profile=nbserver
  • 分离:ctrl-a-d

通过 8888 端口上的浏览器远程享受

于 2013-09-14T08:46:28.943 回答
0

似乎这些内核重启只发生在我在笔记本中导入 traitsui 模块时。特别是,以下导入会导致错误。

from traitsui.api import *
from traitsui.menu import *

解决方案是在导入任何traitsui模块之前更改traitsui的后端,

from traits.etsconfig.api import ETSConfig
ETSConfig.toolkit = 'null'

编辑:traitsui 功能没有在 ssh 中使用,它只是一个更大模块的一部分。

于 2013-08-05T14:40:08.910 回答