【发布时间】:2015-08-30 22:08:14
【问题描述】:
我编写了自己的模块,结构如下:
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
使用我的两个 sn-ps,我正在像这样导入 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 的内核才能使用编辑后的 part2.py 代码这是mymodule 的一部分。
我做错了什么?似乎我没有明白这应该如何工作。
【问题讨论】:
-
听起来像一个错误,我使用
%autoreload 2(实际上我将它添加到ipython_config.py)并且它适用于大多数情况。只有多重继承很麻烦。
标签: python import ipython ipython-notebook jupyter