获取当前的 jupyter-lab 笔记本名称 [对于 Jupyter-lab 版本 2.1 和 3.0.1 以及笔记本版本 >6.0.3)

lho*_*ert 3 python jupyter jupyter-notebook jupyter-lab

问题

大家好,

正如我的标题所暗示的那样,我想访问笔记本名称(在jupyter-lab 中)作为变量。所以我可以在笔记本本身中重用它(例如命名笔记本中生成的一些图形文件)。

我看到几年前打开了一个类似的问题[see here]。但是我没有找到满意的答案。

我喜欢@bill 建议的简单答案

import ipyparams
Run Code Online (Sandbox Code Playgroud)
currentNotebook = ipyparams.notebook_name
Run Code Online (Sandbox Code Playgroud)

但是,它对我不起作用。我第一次执行第一个单元格时收到此警告:

import ipyparams
Javascript Error: Jupyter is not defined
Run Code Online (Sandbox Code Playgroud)
currentNotebook = ipyparams.notebook_name
Run Code Online (Sandbox Code Playgroud)
currentNotebook
   ''
Run Code Online (Sandbox Code Playgroud)

然后,如果我再次重新运行该单元格,则不再有警告消息,但变量currentNotebook仍然为空。(我按顺序运行单元格,我没有执行“运行所有单元格”)。

配置详情

我的 Jupyter 版本是

jupyter notebook --version                                                                            
6.0.3]

jupyter-lab --version                                                                                 
2.1.1
Run Code Online (Sandbox Code Playgroud)

我的笔记本主要用于python代码。


编辑 27/01/2021

@juan 解决方案 [这里],使用ipynbname正在为

jupyter-notebook : 6.1.6
jupyter lab : 2.2.6
Run Code Online (Sandbox Code Playgroud)

但此解决方案仍然不适用于 jupyter lab : 3.0.1


编辑 28/01/2021

ipynbname现在适用于 jupyter 3

关于它的更多细节[这里]

Jua*_*blo 6

作为替代方案,您可以使用以下库:ipynbname

#! pip install ipynbname

import ipynbname
nb_fname = ipynbname.name()
nb_path = ipynbname.path()
Run Code Online (Sandbox Code Playgroud)

这对我有用,解决方案非常简单。

  • 在“ipynbname”存储库上提出问题后,他们添加了“jupyter >3”的兼容性。请参阅问题[[此处](https://github.com/msm1089/ipynbname/issues/2#issuecomment-768879726)] (3认同)
  • 所以我只是尝试使用“jupyter lab --version 2.2.6”并且它正在工作。该问题出现在 jupyter-lab >3.0 上 (2认同)
  • 果然,我在jupyter lab 3.0.5中尝试过,不行。看来3以上版本有问题 (2认同)