无需重启内核实现Jupyter Notebook动态导入与内容更新
解决Jupyter Notebook导入后自动更新内容的问题
先纠正ipython-autoreload的安装误区
你不用单独安装ipython-autoreload,这个扩展是ipython自带的,出现找不到版本的错误是因为根本没有这个独立包。先把ipython更新到最新版本即可:
!pip install --upgrade ipython
方法1:用autoreload配合import_ipynb实现自动重载
在Test1.ipynb的最开头加上这段代码:
%load_ext autoreload %autoreload 2 import import_ipynb import Test2 as test2
%autoreload 2会让所有导入的模块在每次调用时自动重新加载- 修改Test2.ipynb后一定要先保存,回到Test1直接调用
test2.foo()就能拿到更新后的结果
方法2:转成.py文件后用autoreload(更稳定)
如果import_ipynb的自动重载偶尔失效,可以把Notebook转成Python文件:
- 在Jupyter界面找到Test2.ipynb,右键选「Download as」→「Python (.py)」,保存成Test2.py
- 然后在Test1里写:
%load_ext autoreload %autoreload 2 import Test2 as test2
之后修改Test2.ipynb后,重新导出覆盖Test2.py并保存,Test1里调用函数就会自动更新。
方法3:手动重载(应急方案)
要是不想用自动重载,每次改完Test2后,在Test1里执行这段代码手动刷新:
import importlib importlib.reload(test2)
执行完再调用test2.foo()就能拿到新结果。
内容的提问来源于stack exchange,提问作者Leonidas
相关产品推荐
相关产品推荐

