Python 能否判断它是在 JupyterLab 中执行还是在 Jupyter Notebook 中执行?

jki*_*hen 7 python jupyter-notebook jupyter-lab

当从笔记本调用Python代码时,是否可以确定该笔记本是旧笔记本还是JupyterLab?

问题背后的上下文是我想在笔记本内内联显示一些支持 Javascript 的内容。对于普通笔记本,我有各种可用的东西(require.js、执行脚本的能力、访问Jupyter.notebook.kernel.execute等)。在 JupyterLab 中,出于安全考虑,所有这些都已被删除。

我并不是质疑 JupyterLab 的变化,但我确实需要确定这些“Javascript 好东西”是否可用。如果不是,我将编写一个临时 html 页面并打开一个指向它的网络浏览器 - 不太好,但它会这样做,直到我决定编写一个实验室扩展并且用户决定安装它。

那么,如何判断我是在普通笔记本电脑中运行还是在实验室中运行?

我在潜在解决方案中遇到的挑战是:

  1. 我在 Javascript 中执行的任何操作display(Javascript(...))都会在 Python 代码返回后异步运行。所以我不能简单地写if call_javascript() == 'notebook'一些东西。
  2. 如果我允许 Javascript 的异步特性并传递回调,则这只适用于普通笔记本。JupyterLab 无法给我回电话。