我调试(在PyCharm中)一个脚本。我停在断点处,然后进入调试控制台窗口,然后从那里调用导入行,如下所示:
import my_util1 from my_utils
然后我调用my_util1。到目前为止,一切都很好。然后我改变" my_util1"中的内容。现在我想调用(更新的)my_util1,但我不能:系统(Python?Pycharm?)"看到"只有先前版本的my_util1。
是否有可能"重置" (刷新)我之前导入的内容,或者重新导入"重新导入"它,除了退出PyCharm并重新启动项目?
它不是动态更改正在调试的实际代码。我正在寻找的任务更简单 - 只需撤消“导入”即可。操作,或重置/清除/刷新所有'进口'立刻。此外,操作可以在调试器窗口内完成,而不是在代码窗口中完成。
答案 0 :(得分:1)
sys.modules来改变Python对当前导入内容的想法。引用Python文档:
这是一个将模块名称映射到已加载的模块的字典。这可以被操纵以强制重新加载模块和其他技巧。但是,替换字典不一定按预期工作,从字典中删除基本项可能会导致Python失败。
样本用法:
import sys
import my_util1 from my_utils
# Now sys.modules['my_utils'] exists and my_util1 is a local name.
del sys.modules['my_utils']
# my_util1 still exists as a local name, but Python has "forgotten" the import.
import my_util1 from my_utils
# This re-imports my_utils and binds the new my_util1.