Как автоматически обновить расширение ноутбука Jupyter во время разработки / отладки? - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь написать собственное расширение для ноутбука Jupyter, как описано здесь: https://towardsdatascience.com/how-to-write-a-jupyter-notebook-extension-a63f9578a38c

Я использую инструменты разработчика Chrome в Windows7 для проверки и редактирования исходного кода Javascript моего собственного расширения.Я надеялся, что при нажатии F5 для обновления страницы мой измененный исходный код будет немедленно применен.

Однако, как указано в вышеупомянутой статье, мне нужно запустить

jupyter-contrib-nbextensions.exe install

и перезапустить сервер, чтобы обновить расширение ноутбука и увидеть результаты изменений моего кода.

Делать это после каждого небольшого изменения довольно раздражает при игре и разработке / отладке расширений.

=> Есть ли какая-то опция разработки для автоматического обновления / перезагрузки расширения?

1 Ответ

0 голосов
/ 16 июля 2019

В качестве обходного пути я написал расширение "Модуль рабочей области":

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';

ThisКстати, я могу адаптировать свой код во время разработки без необходимости повторного выполнения команды установки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...