我尝试为Jupyter Notebook写一个自定义扩展,如下所述: https://towardsdatascience.com/how-to-write-a-jupyter-notebook-extension-a63f9578a38c
我使用Windows7上的Chrome开发者工具检查和编辑自定义扩展程序的Javascript源代码。我希望当按F5键更新页面时,我更改后的源代码将立即应用。
但是,正如上述文章所述,我必须运行
jupyter-contrib-nbextensions.exe install
并重新启动服务器以刷新笔记本扩展名,并查看我的代码更改的影响。
每次玩转和开发/调试扩展时,这样做都会很烦人。
=>是否有某种开发选项可以自动更新/重新加载扩展?
答案 0 :(得分:0)
作为解决方法,我编写了一个扩展“工作区模块”:
https://github.com/stefaneidelloth/treezjs/tree/master/jupyter_notebook_extension/workspace_module
该扩展名的目的是如果笔记本文件夹中存在文件“ workspace.js”,则将其导入。我的扩展程序的 main.js 是:
define([
'require',
'jquery',
'base/js/namespace',
'base/js/events',
'notebook/js/codecell'
], function(
requirejs,
$,
Jupyter,
events,
codecell
) {
var load_ipython_extension = function() {
if (Jupyter.notebook !== undefined && Jupyter.notebook._fully_loaded) {
init();
} else {
console.log("[workspace_module] Waiting for notebook availability")
events.on("notebook_loaded.Notebook", function() {
init();
})
}
};
function init(){
console.log("[workspace_module] trying to load workspace.js")
var moduleScript = document.createElement('script');
moduleScript.setAttribute('type','module');
moduleScript.setAttribute('src','workspace.js');
document.body.appendChild(moduleScript);
}
return {
load_ipython_extension: load_ipython_extension
};
});
workspace.js 重定向到我的实际扩展名:
import './treezjs/src/treezJupyterNotebook.js';
这样,我可以在开发过程中修改代码,而无需重新执行install命令。