7

由于我通常使用 ipython 来处理正在开发的代码,因此我遇到了将类的代码导入 ipython 后更改其代码的情况。我想在不重新启动 ipython 的情况下重新加载新的类定义。问题是 ipython 中的 reload 函数仅适用于模块。

我搜索了这个问题的解决方案,发现了一个之前的帖子: 如何在python shell中重新加载一个类?

但是,我遵循了那里的方法,但没有奏效。我认为它在该线程中起作用的原因是类名恰好与模块名相同,因此可以在 sys.modules 中找到它,因此可以将其删除。当类名与模块名不同时,该方法不起作用。

我想知道这个问题是否有解决方案。谢谢!

4

2 回答 2

6

是的,有一个名为“autoreload”的 IPython 扩展正是针对这类事情的。这是有关如何使用它的文档。

于 2012-08-23T12:25:03.840 回答
-1

您还可以重新加载单个模块

例如:

#reload every time  
import my_module
reload(my_module)

#reload a module recursively      
import deep_reload_my_module
dreload(deep_reload_my_module)
于 2014-09-07T10:44:54.607 回答