Restart again and again – – SO ANNOYING!
在使用 jupyter notebook 编程中常常会遇到这样的问题,我们在一个笔记本比如 example.ipynb 中 import 了一个外部的自定义模块 mymodule.py,运行后发现 mymodule.py 里有函数写错了,在修改完 mymodule.py 中的错误后回到 example.ipynb 继续运行,发现修改并没有同步到 example.ipynb 中,还是会报相同的错。
最简单粗暴地解决这个问题的方法是 重启内核,让 example.ipynb 重新 import 一下 mymodule.py ,会发现导入的就是修改后的模块了。
但如果我们要频繁修改 mymodule.py 文件,难道要不停地重启再重启吗?那也太烦人了!
Alternative method 1: importlib.reload
第一个方法是使用 importlib 中的 reload 函数,显式地指明 notebook 在导入时注意 reload 一下,即可同步修改。举例如下:
import mymodule
import importlib
importlib.reload(mymodule)
这样在每次修改完后运行 import cell,都会同步修改内容。
然而,如果我们想要同步很多 module呢?一个一个地指明 reload 也有点繁琐,那就可以用第二种方法。
Alternative method 2: autoreload
用法如下:
首先启用 autoreload 拓展:
%load_ext autoreload
接着设置 autoreload 模式为自动重新加载所有模块:
%autoreload 2
如果要自动重新加载 mymodule,可以写作:
%load_ext autoreload
%autoreload 2
import mymodule
Summary
除了重启内核来更新模块修改之外,还可以使用 importlib.reload 和 aotureload 的方法进行更新,还有什么其他方法的话感谢在评论区指出!
803

被折叠的 条评论
为什么被折叠?



