将新代码导入 Jupyter Lab

Import new code into Jupyter Lab

我正在将一些 python 函数导入 Jupyter Lab 笔记本,然后在笔记本中使用它们。但是我在对函数进行更改然后在 Jupyter Lab 笔记本中重新 运行 之间来回切换。我发现让 Jupyter Lab 使用更新代码的唯一方法是重新启动内核,然后重新 运行 一切。虽然这很好用,但有点麻烦,因为我需要再次 运行 笔记本中的所有内容。

有没有更好的方法可以让 Jupyter Lab 看到导入函数的新变化,同时仍然保留所有以前设置的变量?

您可以重新加载要从中导入功能的模块。

假设您的笔记本中有:

from mymodule import myfunction
myfunction()
# execute old version of myfunction

那你去把myfunction改成mymodule.py。重新加载模块:

import importlib
importlib.reload(mymodule)

如果您现在调用myfunction(),将执行新版本。

您也可以通过将其放入您的笔记本中来使用重新加载魔法。它会自动重新加载代码。

%reload_ext autoreload
%autoreload 2

唯一可能引起混淆的情况是,如果您实例化了一个对象,更改了代码,然后想知道,为什么已经实例化的对象没有新功能。除了这个案例,它还不错。