从文件夹中重新加载模块?

3

由于IPython Notebook在我修改模块后不会重新加载文件,因此我正在尝试重新加载它。有一篇帖子介绍了如何做类似的事情,但我的问题是当.py文件在子文件夹中时,它不起作用。

我的原始导入方式如下:

from myutils.MyClassFile import MyClass

在重新加载时出现问题:

reload(myutils.MyClassFile)
from myutils.MyClassFile import MyClass

我收到了错误提示:

name 'myutils' is not defined

有没有关于如何实现这一点的建议。
1个回答

1

在笔记本中:

%load_ext autoreload
%autoreload 2

该功能使得在每次执行单元格时,所有已导入的模块都能够自动重新加载,以反映出最新的更改。

您可以通过以下方式排除某些模块:

%aimport module_to_exclude

或者使用:

%autoreload 1

并且白名单应该被重新加载:

%aimport module_to_include

这会重新加载所有模块,包括未被修改的大型模块吗?有没有一种方法可以只重新加载文件夹中的一个特定模块,而不是所有模块?我希望能够这样做,因为不想在每次单元格运行时重新加载许多大型模块(如语料库)。谢谢。 - Bin
只有更改的模块才会被执行。我在我的答案中添加了几个选项。 - Mike Müller
我尝试了以下内容:“%autoreload 1; %aimport myutils.myeditedmodule; from myutils.myeditedmodule import MyEditedClass; my_new_obj = MyEditedClass();”,但没有重新加载。有什么建议吗? - Bin
尝试使用以下代码:import myutils.myeditedmodule.MyEditedClass as MyEditedClass。同时,您需要更改并保存文件myeditedmodule以强制重新加载。 - Mike Müller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接