如何在Python shell中更新已执行的脚本导入?
这是一个初学者的问题。我启动了iPython环境,使用运行命令来执行脚本,一切都运行得很好。但是,当我运行一个脚本文件后,再编辑一个被导入的脚本文件,然后再尝试运行它时,结果却是老的导入文件被执行了。所以我猜测Python可能会为了提高速度而保存某种缓存。我尝试过使用清除命令,但没有效果。
简单来说,我的问题是这样的。有两个文件:function.py和program.py。程序文件导入了function.py。但是当我运行程序后,再编辑function.py,然后再次运行程序时,结果却是运行了旧的、未编辑的版本。
4 个回答
1
使用 Python 的 reload 函数可以重新编译模块的代码,并重新执行所有模块级别的代码。否则,Python 解释器会使用过时的编译字节码文件(.pyc)。
举个例子:
In [1]: import script
In [2]: run script
...
In [3]: reload(script)
Out[3]: <module 'script' from 'script.pyc'>
...
In [4]: run script
3
适用于Python 3.4及以上版本
import importlib
import foo
# Make changes on foo.py
importlib.reload(foo)
9
在iPython或者标准的Python解释器里,你可以使用reload()
这个函数来重新加载一个已经导入的模块。
举个例子:
In [1]: import foo
# make some changes to the foo.py
In [2]: reload(foo)