对于一个项目,我们尝试使用 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 是不够的?