在交互式 Python 会话中撤销/重做/刷新 `import`
可能重复的问题:
如何卸载(重新加载)一个Python模块?
在Python中,有没有办法“刷新”一个已经导入的模块?我的使用场景是:我想在交互式环境中不断改进这个模块;到目前为止,我每次都要完全重启交互会话来重新加载我更新的代码。
有没有更好的方法呢?
1 个回答
5
假设你已经在命名空间里有一个叫 foo
的模块,但你对源代码做了一些修改,现在想要导入新的代码,可以使用:
reload(foo)
这里有个小问题:如果你使用了 from foo import bar
并且之后对函数 bar
进行了修改,那么重新加载是不会生效的。在这种情况下,你可能更想用 import foo
,然后调用 foo.bar()
,这样你就可以通过 reload
让修改立即生效。
如果你经常在这样的交互式环境中工作,或许你会想用 ipython,并在你的 ipy_user_conf.py
文件中添加以下几行:
# For autoreloading of modules (%autoreload, %aimport)
import ipy_autoreload