我编写了自己的模块,其结构如下:
mymodule/
├── __init__.py
├── part1.py
├── part2.py
├── part3.py
└── part4.py
为了测试我的模块,我使用的是IPython和/或jupyter notebook(以前的Ipython Notebook)。像往常一样,我像
一样进行模块导入import mymodule
我们假设我在part2.py
编辑了一些代码,并希望使用我的模块的更新版本。首先,我认为只需通过import mymodule
重新导入模块即可完成工作,但事实并非如此。要完全重新加载模块,我必须关闭IPython的shell或重新启动jupyter的内核,然后通过导入mymodule
再次启动。
但是,在docs,IPython提供了一个名为autoreload
的自动更新功能,它提供了不同的模式,可以按如下方式激活:
%load_ext autoreload
%autoreload 1
%aimport mymodule
使用我的两个代码段,我正在导入mymodule
:
%load_ext autoreload
%autoreload 1
%aimport mymodule
import mymodule
# let's do something with the module here
然而,即使激活了autoreload 1
或autoreload 2
,IPython和jupyter都没有做我期望他们做的事情,我仍然要退出IPython的shell或重启jupyter' s内核,以便使用part2.py
的编辑代码mymodule
。
我做错了什么?似乎我没有明白这应该如何运作。
答案 0 :(得分:4)
将%autoreload 1
更改为%autoreload 2
,例如dashesy说的旧版本或错误。