IPython/jupyter笔记本中的自动更新模块

alb*_*ert 6 python import ipython ipython-notebook jupyter

我编写了自己的模块,其结构如下:

mymodule/
??? __init__.py
??? part1.py
??? part2.py
??? part3.py
??? part4.py
Run Code Online (Sandbox Code Playgroud)

为了测试我的模块,我使用的是IPython和/或jupyter笔记本(以前的Ipython Notebook).像往常一样我做模块导入

import mymodule
Run Code Online (Sandbox Code Playgroud)

假设我编辑了一些代码,part2.py并希望使用我的模块的更新版本.首先,我认为只需重新导入模块即可import mymodule完成工作,但事实并非如此.要完全重新加载模块,我必须关闭IPython的shell或重新启动jupyter的内核并通过导入再次启动mymodule.

但是,在提供文档时,IPython提供了一个自动更新函数autoreload,该函数提供了不同的模式,可以按如下方式激活:

%load_ext autoreload
%autoreload 1
%aimport mymodule
Run Code Online (Sandbox Code Playgroud)

使用我的两个片段,我这样导入mymodule:

%load_ext autoreload
%autoreload 1
%aimport mymodule

import mymodule

# let's do something with the module here
Run Code Online (Sandbox Code Playgroud)

然而,即使有激活autoreload 1autoreload 2既不IPython的也不jupyter在做什么,我希望他们做的,我还是要退出的IPython的壳或重新启动jupyter的内核,以便使用编辑的代码的part2.py这部分mymodule.

我究竟做错了什么?似乎我没有明白这应该如何运作.

wiz*_*z94 5

更改%autoreload 1%autoreload 2像 dashesy 所说的旧版本或错误。