因为我经常使用ipython来开发正在开发的代码,所以我遇到了在将其导入ipython之后更改类的代码的情况。我想重新加载新的类定义而不重新启动ipython。问题是ipython中的重载功能仅适用于模块。
我搜索了这个问题的解决方案并找到了一个上一个帖子: how to reload a Class in python shell?
然而,我遵循那里的方法,但它没有工作。我认为它在该线程中工作的原因是类名碰巧与模块名称相同,因此可以在sys.modules中找到它,因此可以删除。当类名与模块名不同时,该方法不起作用。
我想知道是否有这个问题的解决方案。谢谢!
答案 0 :(得分:6)
是的,有一个名为'autoreload'的IPython扩展正好用于此类事情。关于如何使用它的Here's the documentation。
答案 1 :(得分:-1)
您还可以重新加载单个模块
例如:
#reload every time
import my_module
reload(my_module)
#reload a module recursively
import deep_reload_my_module
dreload(deep_reload_my_module)