如果你并不关心实际"import"的模块,只是想运行文件中定义的一些函数,你也可以改为执行该文件。它将加载所有函数,就像前面说的将它们复制并粘贴到IPython会话中一样。你可以根据需要多次重新运行文件,它会始终更新所有函数方法。具体操作在IPython中运行文件非常简单:
%run my_file.py
# 你可以把文件扩展名".py"直接忽略进行加载:
%run my_file
其实在标准 Python REPL 中也可以类似实现,但它需要更多的内容,相对比较繁杂:
exec(open("./my_file.py").read())
老实说,这样做还不如直接使用importlib.reload 代替。上面这俩种办法虽然已经完美解决重载需求,但是程序猿都有懒癌,有没有更好的解决办法呢? 答案是有的。 %autoreload IPython 中的另一个用来重新加载模块的神奇方法,它就是传说中的 "%autoreload"。默认情况下是关闭的,需要认为打开:
%load_ext autoreload
现在,您可以打开自动重新加载:
%autoreload 2
每次执行一些代码时,IPython 都会重新导入所有模块,以确保使用的是最新的可能版本。你 可以设置 3 个配置选项: https://stackoverflow.com/questions/4111640/how-to-reimport-module-to-python-then-code-be-changed-after-import https://ipython.readthedocs.io/en/stable/config/extensions/autoreload.html https://stackoverflow.com/questions/33862420/ipython-notebook-how-to-reload-all-modules-in-a-specific-python-file https://realpython.com/lessons/reloading-module/