gpt4 book ai didi

python - 我如何与 Python 内核交互 JupyterLab 扩展?

转载 作者:行者123 更新时间:2023-12-03 21:02:11 29 4
gpt4 key购买 nike

有没有办法为 Jupyter Lab 创建扩展,我可以通过笔记本中的 Python 单元操作它?

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

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

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

最佳答案

A. Python 到 JavaScript
看看https://opensourcelibs.com/lib/ipylab
“从 Python 笔记本控制 JupyterLab。”

from ipylab import JupyterFrontEnd
app = JupyterFrontEnd()
...
在某些情况下,一种可能的解决方法可能是使用 javascript 扩展来观察 python 单元,如果 python 代码发生变化,请检查扩展是否需要相应地进行调整。
有关的:
How to use events in jupyterlab extensions?
B. JavaScript 到 Python
“ConsolePanel 和 NotebookPanel 现在公开 sessionContext: ISessionContext 属性,允许以统一的方式与内核 session 交互。”
来源: https://jupyterlab.readthedocs.io/en/stable/extension/extension_migration.html?highlight=migration#using-session-and-sessioncontext-to-manage-kernel-sessions
下面是一个关于内核消息传递的例子:
https://github.com/jupyterlab/extension-examples/tree/master/kernel-messaging
var notebookPanel = this.__getFirstVisibleNotebookPanel(app);   
var sessionContext = notebookPanel.sessionContext;
var kernelConnection = sessionContext.session.kernel;
var future = kernelConnection.requestExecute('1+3');
future.onIOPub = (msg) => {
const msgType = msg.header.msg_type;
switch (msgType) {
case 'execute_result':
case 'display_data':
case 'update_display_data':
var result = msg.content;
console.log(result);
break;
default:
break;
}
return;
};

关于python - 我如何与 Python 内核交互 JupyterLab 扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56816015/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com