问题描述
热更新,在不重启进程或不退出Python解释器的情况下,使修改后的Python源码能直接生效。
平常开发中,热更新能极大提高程序开发和调试的效率,在修复线上bug中更是扮演重要的角色。但是实现一个理想可靠的热更模块又非常的困难。
解决方案
方法二更实用
tool.py
def show():
print(1)
test.py
import tool
if __name__ == '__main__':
tool.show()
tool.show()
方法一:Evaluate Expression
利用PyCharm Debugger的Evaluate Expression功能替换函数
- 在第二个
tool.show()
上打断点
- 以Debug模式运行:点击Run→Debug ‘test’ 或 快捷键
Alt+Shift+F9
- 执行表达式:点击Evaluate Expression 或 快捷键
Alt+F8
- 展开表达式
- 执行代码
def show():
print('new')
tool.show = show
- Debug继续执行可看到热更新成功,输出new
1
new
方法二:
利用PyCharm Debugger的Show Python Prompt功能
- 在第二个
tool.show()
上打断点
- 以Debug模式运行:点击Run→Debug ‘test’ 或 快捷键
Alt+Shift+F9
- 直接修改源文件tool.py:
print('new')
- 打开Prompt:点击
Show Python Prompt
- 执行代码:
from importlib import reload
→reload(tool)
- Debug继续执行可看到热更新成功,输出new