如何将JupyterLab扩展与Python内核交互?

时间:2019-06-29 08:03:43

标签: python jupyter-notebook jupyter jupyter-lab ipywidgets

是否可以为Jupyter Lab创建扩展,以便可以通过笔记本中的Python单元进行操作?

在Jupyter Notebook中,这可以通过具有Python后端和Javascript前端的IPywidget来实现。这两个可以交互,因此我可以通过Python将指令发送到javascript前端,反之亦然。

据我了解,在Jupyter Lab中不再可能,因为他们禁用了通过IPython执行javascript的功能。建议创建jupyterlab扩展。是否可以通过Python代码控制这种扩展,如果可以,怎么办?

在一个简单的示例中,我想要一个侧边栏(如TOC扩展名),其中包含一个文本框,可以通过Python设置其文本。

1 个答案:

答案 0 :(得分:0)

到目前为止我发现了什么

“ ConsolePanel和NotebookPanel现在公开了sessionContext:ISessionContext属性,允许使用统一的方式与内核会话进行交互。” 来源:https://jupyterlab.readthedocs.io/en/stable/developer/extension_migration.html

以下是有关内核消息传递的示例:

https://github.com/jupyterlab/extension-examples/tree/master/advanced/kernel-messaging

String text = getText(new File(pdfPath));
System.out.println("Text in PDF: " + text);

static String getText(File pdfFile) throws IOException {
        PDDocument doc = PDDocument.load(pdfFile);
        return new PDFTextStripper().getText(doc);
    }