我有一个名为test_file
的文件,用于测试另一个名为file
的文件。 'test_file'还包含同一目录中的.txt
文件。当我更新file
,保存,选择“更改为编辑器目录...”,然后运行test_file
,Enthought似乎没有认识到file
已更新。最初我认为每次更新file
时都必须选择“更改为编辑器目录”选项,所以我做了,但test_file
仍然打印'成功',即使我故意编辑file
以便test_file
应该打印错误。 (是的,我确定它应该打印错误,因为我在file
中添加了一堆乱码,甚至是不应该运行的代码,例如抛出带有明显不正确缩进的return
语句)。所以,基本上,Enthought Canopy没有意识到我已经更新了file
。
但是,如果我保存并退出所有内容,请重新打开Enthought,选择“更改为编辑器目录”,然后运行test_file
,它会输出正确的结果。
这非常令人沮丧,因为在我意识到这一点之前,我花了好几天调试正确的代码。它让我非常担心,因为我不知道我过去测试的是否真的是正确的,我不希望将来发生这种情况。
可能的原因是什么? (注意:我不知道这是Enthought问题还是Python问题)
没有看到代码就很难说,但我怀疑file
是用一个等同于import file
的命令导入的。 Python缓存导入的模块,因此它不会在file
中获取更改。这是一个Python功能,独立于Enthought Canopy。
如果是这种情况,您可以通过在reload
中导入后添加对http://bit.ly/1E97V4n(test_file
)的调用来解决问题,以明确强制重新加载模块:
import file
reload(file)
使用Python 2.x,@ pberkes的答案有效。对于其他Python版本,您可能希望将this answer看到另一个SO帖子。