在Google Cloud Datalab中执行IPyWidgets

时间:2016-04-04 14:00:37

标签: jupyter-notebook google-cloud-datalab ipywidgets

对于项目,我们尝试使用IPyWidgets扩展Google Cloud Datalab。当我们在本地尝试jupyter笔记本(不是google-cloud-datalab)中的IPyWidgets时,一切都按预期运行(即我们试图显示一个文本字段,这是有效的)。当我们尝试在Google Cloud Datalab中执行相同的代码时,它会失败。在Web控制台中,我们看到以下错误:

错误1:

Error message: "Class ipython.widget not found in registry "
Error stack: "load_class/<@http://localhost:8081/static/notebook/js/main.min.js:12751:28load_class@http://localhost:8081/static/notebook/js/main.min.js:12736:1CommManager.prototype.comm_open@http://localhost:8081/static/notebook/js/main.min.js:21802:31.proxy/i@http://localhost:8081/static/notebook/js/main.min.js:89:5486Kernel.prototype._handle_iopub_message@http://localhost:8081/static/notebook/js/main.min.js:23101:20Kernel.prototype._finish_ws_message@http://localhost:8081/static/notebook/js/main.min.js:22936:1Kernel.prototype._handle_ws_message/this._msg_queue<@http://localhost:8081/static/notebook/js/main.min.js:22926:39"

错误2:

Message: Could not open comm
Error message: "Couldn't process kernel message"
Error stack: "WrappedError@http://localhost:8081/static/notebook/js/main.min.js:12706:19reject/<@http://localhost:8081/static/notebook/js/main.min.js:12785:33"

奇怪的是,当google-cloud-datalab正在运行时,我们转到jupyter笔记本(在端口9000上),我们在那里执行代码。

我们是否需要对nb.html和/或static.ts进行更改才能使其正常工作?

问题:有没有办法在Google Cloud Datalab上执行IPyWidgets?

问候,布莱希特

编辑:我现在可以在google-cloud-datalab中加载来自IPyWidgets的js和css文件(你需要更改static.ts,对于那些想知道的人)。唯一剩下的问题(希望如此)是我们得到以下错误:

"Error: Could not determine where the display message was from. Widget will not be displayed".

这是因为

var cell = this.get_msg_cell(msg.parent_header.msg_id);

为null(ipywidgets / widgets / js / manager.js的第556行)。我认为改变static.ts是不够的?

1 个答案:

答案 0 :(得分:0)

在:

"Error: Could not determine where the display message was from.  Widget will not be displayed".

问题可以通过在datalab.js中更改这一行来修复:

originalExecute.apply(this, [ code, callbacks, options ]);

为:

return originalExecute.apply(this, [ code, callbacks, options ]);