对于项目,我们尝试使用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是不够的?
答案 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 ]);