Как автоматически обновить расширение ноутбука Jupyter во время разработки / отладки?
Я пытаюсь написать собственное расширение для ноутбука Jupyter, как описано здесь: https://towardsdatascience.com/how-to-write-a-jupyter-notebook-extension-a63f9578a38c
Я использую инструменты разработчика Chrome в Windows7 для проверки и редактирования исходного кода Javascript моего собственного расширения. Я надеялся, что при нажатии F5 для обновления страницы мой измененный исходный код будет немедленно применен.
Однако, как указано в вышеупомянутой статье, я должен запустить
jupyter-contrib-nbextensions.exe install
и перезапустите сервер, чтобы обновить расширение ноутбука и увидеть результаты изменений моего кода.
Делать это после каждого небольшого изменения довольно раздражает при игре и разработке / отладке расширений.
=> Есть ли какая-то опция разработки для автоматического обновления / перезагрузки расширения?
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';
Таким образом, я могу адаптировать свой код во время разработки без необходимости повторно выполнять команду установки.