我调试(在 PyCharm 中)一个脚本。我在断点处停止,然后转到调试控制台窗口,然后从那里调用导入行,如下所示:
import my_util1 from my_utils
然后我调用 my_util1。到目前为止,一切都还好。然后我更改“my_util1”中的某些内容。现在我想调用(更新的)my_util1,但我不能:系统(Python?Pycharm?)“看到”的只是 my_util1 的先前版本。
除了退出 PyCharm 并重新启动项目之外,是否可以“重置”(刷新)我之前导入的内容或“重新导入”它?
它不是动态更改正在调试的实际代码。我正在寻找的任务更简单 - 只需撤消“导入”操作,或立即重置/清除/刷新所有“导入”就足够了。此外,该操作可以在调试器窗口中完成,而不是在代码窗口中。
系统模块 https://docs.python.org/3/library/sys.html#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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)