可以在不使用内联绘图的情况下远程访问 IPython Notebook 吗?

Posted

技术标签:

【中文标题】可以在不使用内联绘图的情况下远程访问 IPython Notebook 吗?【英文标题】:Can one remotely access an IPython Notebook without using inline plotting? 【发布时间】:2012-07-13 00:34:47 【问题描述】:

我想连接到远程计算机上的 IPython 笔记本(通过 ssh 隧道或通过 https)并让 ipython 笔记本在新窗口中打开 matplotlib 图(相对于“内联”)。

这可能吗?

当我尝试在没有“内联”后端的情况下进行绘图时,笔记本内核报告“:无法连接到 X 服务器”并崩溃。

X11 服务器正在客户端计算机上运行,​​我在创建 ssh-tunnel 时使用 -Y 选项启用了 X11 转发。

感谢您的建议。

【问题讨论】:

您还需要在远程计算机上启用 X11 转发(使用 sshd 选项)。 谢谢,但我相信此选项已启用,即我可以使用 X11 为 emacs、gimp 等打开窗口……但不知何故,运行笔记本的 ipython 内核无法。 首先,你说“使用 -Y 选项”:它应该是-X。现在,我已经能够从我的一台 Ubuntu 计算机上执行此操作(尽管它有点不稳定.. 倾向于断开我的 adsl 连接)。在我的另一个盒子(通过直接互联网)中,如果我尝试show() 绘图,ipython 内核会因“无法连接到 X 服务器”而崩溃。到目前为止,我还没有弄清楚为什么...... 【参考方案1】:

是的,至少是通过 ssh 端口隧道。

(注意:示例是在 Ubuntu 12.04 上完成的,但同样的原理应该适用于其他平台)

我遇到了类似的问题,发现如果我从端口和 X 转发 ssh 会话(即:设置端口和 X 转发的会话)中运行 IPython 笔记本,它可以工作。笨重和烦人,但它的工作原理。例如:

at-home:~$ ssh -X -L 8889:localhost:8888 my.server
... login message from my.server
my.server:$ cd /folder/containing/my/notebooks
my.server:$ ipython notebook
[NotebookApp] .... lots of info about the IPython notebook server including
[NotebookApp] The IPython notebook is running at 'http://127.0.0.1:8888/'

请注意,我已转发端口 8889 - 这意味着我在 at-home 机器上的浏览器中使用 http://localhost:8889/。对我来说,这与 Qt4Agg 后端配合得很好。

我怀疑如果您以这种方式运行 IPython 笔记本服务器(即:从ssh -X 会话中),它也可以通过 https 访问笔记本。请注意,这些图将出现在转发 X 会话的机器上。如果有人在另一台机器上的浏览器中运行笔记本,这可能有点奇怪!

也许可以告诉正在运行的 IPython 笔记本服务器如何找到由一些新的 ssh 会话转发的 X 服务器,但我不确定如何(欢迎知识编辑!)。

【讨论】:

+1 !谢谢,这立即解决了我“端口转发”远程 ipython 笔记本的问题

以上是关于可以在不使用内联绘图的情况下远程访问 IPython Notebook 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不引用外部 CSS 文件的情况下在 WordPress PHP 文件中创建内联 CSS?

如何在不使用 cytoscape.js 重绘图形的情况下删除特定边?

在不通过网络浏览器进行清理的情况下查看访问日志是不是危险?

如何在不使用身份验证的情况下保护 RESTful Web 服务

如何在不改变绘图宽度的情况下使用 ggplot2 在 R 中添加可变大小的 y 轴标签?

如何在不完全影响主屏幕绘图性能的情况下每 200/250 毫秒更新一次小部件?