在使用jupyter实际开发过程中,尤其是针对自定义的模块,往往需要多次调试修改,因此需要多次导入。但是jupyter默认不覆盖导入。针对这个问题,可以通过jupyter的魔法命令实现。博客jupyter notebook 每次运行自动重新导入模块讲解说明的非常清楚了。在此转载一下,感谢!
使用jupyter不方便的一个地方就是,每次只在当前运行时环境运行代码。
比如第一次导入了test_module.py中的某个函数test_func(),在运行的时候发现test_func()需要做一些改动,才能用。于是做了修改,然后重新 运行jupyter中对应的cell,你会发现,你在test_module.py中做的修改没有被导入。
解决办法共有三种:
- 重启Jupyger
- 重新载入需要的模块
比如我的test_module模块,在cell中使用一下代码:import importlib importlib.reload(test_module)
- 在cell中添加如下代码,每次运行自动导入aimport 指定的模块
比如我的test_module模块:
或者自动重载所有模块,每次运行一个cell,所有模块都会重载一次,缺点是会耗费一点时间。%load_ext autoreload %autoreload 1 %aimport test_module
%load_ext autoreload %autoreload 2