[英]How to refresh a Python import in a Jupyter Notebook cell?
我有两个文件:
MyModule.py 我的笔记本.ipynb
我正在使用最新的 Jupyter Notebook 和最新的 Python。 我的笔记本中有两个代码单元。
单元#1
import some stuff
Run some code
(Keep everything in the environment takes about five minutes to run this cell).
单元#2
import MyModule
Execute code from MyModule
我想在 MyModule.py 中进行代码更改并重新运行Cell #2 ,但不重新启动 kernel( Cell #1做了很多工作,我不想每次都重新运行)。 如果我只是运行第二个单元格,则对 MyModule.py 所做的更改不会传播。 我做了一些挖掘,并尝试使用 importlib.reload。 Cell #2的实际代码:
from Nash.IOEngineNash import *
import importlib
importlib.reload(Nash.IOEngineNash)
不幸的是,这并不完全奏效。 如何在不重新启动 kernel 并从头开始运行的情况下将 MyModule.py(或实际上是 Nash/IOEngineNash.py)中的这些更改推送到我的笔记本中?
我在 jupyter notebook 中导入自定义脚本时遇到了类似的问题
尝试将模块作为别名导入,然后重新加载它
import Nash as nash
from importlib import reload
reload(nash)
为确保所有对旧版本模块的引用都已更新,您可能希望在重新加载后重新导入它,例如
import mymodule
reload(mymodule)
import mymodule
由于隐式依赖关系可能会出现问题,因为importlib.reload
仅重新加载您要求它重新加载的(顶级)模块,而不是其子模块或外部模块。
如果你想递归地重新加载一个模块,你可以看看这个 gist ,它允许你简单地在笔记本单元格的顶部添加这样的一行:
%reload mymodule
import mymodule
这会递归地重新加载mymodule
及其所有子模块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.