我有一个名为test_file
的文件,它是为了测试另一个名为file
的文件而设计的。"test_file"在同一目录下也包含一个.txt
文件。当我更新file
时,保存,选择"更改到编辑器目录.",然后运行test_file
,Enthought似乎没有意识到file
被更新了。最初我以为每次更新file
时都必须选择"更改到编辑器目录"选项,所以我这样做了,但是test_file
仍然打印"成功",即使我故意编辑file
,使test_file
应该打印false。(是的,我确信它应该打印false,因为我在file
中添加了一堆乱码,甚至是不应该运行的代码,例如抛出带有明显不正确缩进的return
语句)。所以,本质上,Enthought Canopy没有意识到我已经更新了file
。
但是,如果我保存并退出所有内容,* 重新打开 * Enthought,选择"更改到编辑器目录",然后运行test_file
,它会打印正确的结果。
这是非常令人沮丧的,因为我花了几天时间调试 * 正确的 * 代码才意识到这一点。这让我非常担心,因为我不知道我过去测试的是否真的正确,我不希望这种情况在未来发生。
可能的原因是什么?(注意:我不知道这是Enthought问题还是Python问题)
2条答案
按热度按时间hgqdbh6s1#
在没有看到代码的情况下很难说,但我怀疑
file
是用一个等效于import file
的命令导入的。Python缓存导入的模块,所以它不会拾取file
中的更改。这是一个Python特性,独立于Enthought Canopy。如果是这种情况,可以通过在
test_file
中的导入之后添加对reload
的调用(https://docs.python.org/2/library/functions.html#reload)来解决这个问题,以显式地强制重新加载模块:57hvy0tb2#
在Python2.x中,@pberkes 的答案是有效的。对于Python 3,你可以这样做:
source