Python解释器';s与脚本的关系

Python解释器';s与脚本的关系,python,scripting,execfile,Python,Scripting,Execfile,在我当前的目录中,我有一个foo1.py脚本和一个名为other的目录,其中包含一个foo2.py脚本 现在: 我启动解释器,并使用execfile启动这两个脚本。问题是,当我编辑并保存foo1.py时,我不必重新启动解释器,我只需再次执行execfile,它会在修改后运行,但foo2.py不会发生同样的情况。为了使我对foo2.py所做的编辑生效,我必须退出并重新启动解释器,因为即使在保存execfile('foo2.py')后,解释器仍将运行与以前相同的脚本 这很烦人,因为我想连续不断地编辑

在我当前的目录中,我有一个
foo1.py
脚本和一个名为other的目录,其中包含一个
foo2.py
脚本

现在:

我启动解释器,并使用
execfile
启动这两个脚本。问题是,当我编辑并保存
foo1.py
时,我不必重新启动解释器,我只需再次执行
execfile
,它会在修改后运行,但
foo2.py
不会发生同样的情况。为了使我对
foo2.py
所做的编辑生效,我必须退出并重新启动解释器,因为即使在保存
execfile('foo2.py')
后,解释器仍将运行与以前相同的脚本

这很烦人,因为我想连续不断地编辑和启动多个脚本,这些脚本常常相互依赖

我怎样才能让解释器看到我对
foo2.py
的编辑,而不必重新启动它


谢谢

看看reload()函数的文档以及其中提到的限制;根据您的python版本,它位于不同的模块中,对于2.x,它是预定义的。

如果您使用的是“最新”的python,您可以尝试以下与python 2.6、2.7和3.x兼容的语法

with open('foo2.py') as file:
    exec(compile(file.read(), 'foo2.py', 'exec'))