Python - 对导入文件的更改不会生效

问题描述 投票:4回答:2

我有一个名为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问题)

python python-2.7 debugging enthought
2个回答
4
投票

没有看到代码就很难说,但我怀疑file是用一个等同于import file的命令导入的。 Python缓存导入的模块,因此它不会在file中获取更改。这是一个Python功能,独立于Enthought Canopy。

如果是这种情况,您可以通过在reload中导入后添加对http://bit.ly/1E97V4ntest_file)的调用来解决问题,以明确强制重新加载模块:

  import file
  reload(file)

0
投票

使用Python 2.x,@ pberkes的答案有效。对于其他Python版本,您可能希望将this answer看到另一个SO帖子。

© www.soinside.com 2019 - 2024. All rights reserved.