恢复/撤消/重做/刷新,交互式python会话中的“导入”[重复]

Posted

技术标签:

【中文标题】恢复/撤消/重做/刷新,交互式python会话中的“导入”[重复]【英文标题】:revert/undo/redo/refresh, an `import` in interactive python session [duplicate] 【发布时间】:2011-10-22 16:37:18 【问题描述】:

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

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

有没有更好的方法?

【问题讨论】:

对this question 的接受回答显示了如何重新加载模块(以交互方式和在脚本中工作)。 @Björn Pollex:谢谢,这正是我所需要的。 【参考方案1】:

假设命名空间中已经存在一个名为 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

【讨论】:

以上是关于恢复/撤消/重做/刷新,交互式python会话中的“导入”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

IOS 8:带有撤消和重做按钮的自定义键盘

C++ 撤消/重做实现中的抽象类问题

Qt 5,为 QTabWidget 中的每个 QTextBrowser 撤消/重做

Flex ApplyFormatOperation 中断 Spark TextArea 中的撤消/重做

检测 iOS 13 撤消和重做

如何将Tkinter Text小部件的撤消/重做历史记录复制到另一个小部件中