参考文献
原因
一个 Jupyter Notebook 中的所有代码,都是在同一个运行时中运行的代码,当多次导入同一个模块时,Python 的包管理机制会自动忽略后面的导入,始终只使用第一次导入的结果(所以使用这种方式也可以实现单例模式)。
如果在修改了被导入的包以后,想重新导入它怎么办呢?
有3种方案
1. 重启整个 Notebook
但这样会导致当前运行时里面的所有变量全部丢失。
2. 使用importlib
import importlib
importlib.reroad(your_module)
# 在需要重新导入module的cell中写importlib.reroad即可
3. 魔法函数
在cell中添加如下代码,每次运行自动导入aimport 指定的模块。
%load_ext autoreload
%autoreload 1
%aimport your_module
进一步偷懒,自动重载所有模块,每次运行一个cell,所有模块都会重载一次,缺点是会耗费一点时间
%load_ext autoreload
%autoreload 2