10.6 重新加载模块

问题

你想重新加载已经加载的模块,因为你对其源码进行了修改。

解决方案

使用imp.reload()来重新加载先前加载的模块【3.4+已弃用,详看自己的笔记】。举个例子:

>>> import spam
>>> import imp
>>> imp.reload(spam)
<module 'spam' from './spam.py'>

讨论

重新加载模块在开发和调试过程中常常很有用。但在生产环境中的代码使用会不安全,因为它并不总是像您期望的那样工作。

reload()擦除了模块底层字典的内容,并通过重新执行模块的源代码来刷新它。模块对象本身的身份保持不变。因此,该操作在程序中所有已经被导入了的地方更新了模块。

尽管如此,reload()没有更新像 from module import name 这样使用import语句导入的定义。

Last updated

Was this helpful?