正如所问,你能做的最好
>>> from project.models.user import *
>>> import project # get module reference for reload
>>> reload(project.models.user) # reload step 1
>>> from project.models.user import * # reload step 2
如果您直接使用用户模块,而不是进行导入*(这几乎不是正确的方式),那将会更好,更干净.那就是
>>> from project.models import user
>>> reload(user)
这将做你想要的但是,这不是很好.如果您真的需要经常重新加载模块,我必须问:为什么?
我的怀疑(由以前的经验与人们提出类似的问题进行备份)是您正在测试您的模块.有很多方法可以测试一个模块,手动交互式解释器是最糟糕的方法之一.将一个会话保存到一个文件中,并使用doctest进行快速修复.或者,将它作为程序写出来,并使用python -i.唯一真正很棒的解决方案是使用unittest模块.
如果不是这样,希望是更好的东西,而不是更糟.真的没有很好的使用重新加载(实际上,它在3.x中被删除).它不能有效地工作 – 您可能会重新加载模块,但从以前的版本中留下剩菜.它甚至不适用于各种模块 – 扩展模块在重新加载时不会正确重新加载,有时甚至可能会非常糟糕.
在互动解释器中使用它的上下文不会对您正在做什么留下很多选择,以及真正的最佳解决方案.在外面,有时候人们使用reload()来实现插件等等.这是至关重要的,并且可以使用exec(我们发现自己的恶意领域)或者隔离的进程来进行不同的处理.