簡體   English   中英

如何在開發/調試期間自動更新Jupyter Notebook擴展?

[英]How to auto-update jupyter notebook extension during development/debugging?

我嘗試為Jupyter筆記本編寫自定義擴展,如下所述: https ://towardsdatascience.com/how-to-write-a-jupyter-notebook-extension-a63f9578a38c

我使用Windows7上的Chrome開發者工具來檢查和編輯自定義擴展程序的Javascript源代碼。 我希望當按F5鍵更新頁面時,我更改后的源代碼將立即應用。

但是,如上述文章所述,我必須運行

jupyter-contrib-nbextensions.exe install

並重新啟動服務器以刷新筆記本擴展名,並查看我的代碼更改的效果。

在嘗試和開發/調試擴展時,每次細微更改后這樣做都是很煩人的。

=>是否有某種開發選項可以自動更新/重新加載擴展?

作為解決方法,我編寫了一個擴展“工作區模塊”:

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命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM