revert / undo / redo / refresh,交互式python会话中的`import`

时间:2011-08-08 19:44:13

标签: python import interactive iteration

  

可能重复:
  How do I unload (reload) a Python module?

是否可以在python中“刷新”导入的模块?用例:交互式改进模块;直到现在,我总是完全重启交互式会话以重新加载我更新的源。

有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

假设名称空间中已存在名为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