python - 使用 SSH+screen 远程启动 IPython,然后分离并注销

标签 python ssh ipython enthought jupyter-notebook

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

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

  • SSH 进入远程框:ssh -X 1.1.1.1
  • 启动或重新附加到上一个屏幕:screen -RD
  • 启动Notebook ipython notebook
  • 分离并注销:ctrl-a-dexit

远程笔记本服务器工作正常,直到我注销,然后尝试创建一个 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 资源,我一注销笔记本就无法绘图。有人对此有解决方案吗?

最佳答案

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

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

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

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

关于python - 使用 SSH+screen 远程启动 IPython,然后分离并注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17997008/

相关文章:

python - 在文件中存在特定字符串后捕获单词,如果存在则添加一行

ssh - hell AesCtrCryptoTransform

git - Jenkins 的 npm install 无法安装托管在 bitbucket 上的模块

macos - 在 Mac OSx 上通过 SSH 连接到 EC2 时出现权限错误

python - ipython:exit() 语句未按预期工作

ipython - iPython Notebook 中的默认笔记本目录 - iPython 3.0.0

python - 使用分发/设置工具创建符号链接(symbolic link)(或运行脚本)?

python - 从字典中提取结果

python - 将 NetCDF 深度从 Float 转换为 Double

python - 在 Ipython 中设置新主题时遇到问题?