【问题标题】:Start IPython remotely using SSH+screen, then detach and log out使用 SSH+screen 远程启动 IPython,然后分离并注销
【发布时间】:2013-08-01 14:34:34
【问题描述】:

我的 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 资源,我一注销,笔记本似乎无法绘图。有没有人可以解决这个问题?

【问题讨论】:

标签: python ssh ipython enthought ipython-notebook


【解决方案1】:

Ipython 正在您使用 ssh -X 创建的 X 会话中创建您的绘图(或任何其他 X 图形,例如 traitsui UI 元素)。当您注销时,ssh 隧道与该 X 会话一起关闭,因此出现错误。没有 ssh 隧道,情节就无法到达您的身边。

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

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

  • %pylab inline导入pylab模块
  • 使用%matplotlib inline 导入matplotlib(不确定旧版本是否可用)
  • 使用ipython notebook --pylab=inline 运行 ipython
  • configure ipython 始终使用 pylab 内联:运行 ipython profile create,然后在 ipython_notebook_config.py 中查找“内联”,它位于您的 ipython 配置文件目录中 - 在 Ubuntu 上为 ~/.config/ipython/profile_default/

【讨论】:

    【解决方案2】:
    • SSH 进入远程盒子:ssh -X 1.1.1.1
    • 开始屏幕:screen -S ipython_process
    • 启动笔记本:ipython notebook --profile=nbserver
    • 分离:ctrl-a-d

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-15
        • 2016-05-25
        • 1970-01-01
        • 2013-11-28
        • 2015-02-15
        • 2012-06-05
        • 1970-01-01
        相关资源
        最近更新 更多