0

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

错误一:

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 notebook(在端口 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);

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

4

1 回答 1

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 ]);
于 2016-04-23T04:35:31.820 回答