【问题标题】:Python - Changes to imported file do not take effectPython - 对导入文件的更改不生效
【发布时间】:2015-03-27 01:53:49
【问题描述】:

我有一个名为test_file 的文件,它旨在测试另一个名为file 的文件。 'test_file' 还包含同一目录中的.txt 文件。当我更新file,保存,选择“更改到编辑器目录...”,然后运行test_file,Enthought 似乎没有识别出file 已更新。最初我以为每次更新file 时都必须选择“更改到编辑器目录”选项,所以我这样做了,但test_file 仍然打印“成功”,即使在我故意编辑file 以便@ 987654330@ 应该打印错误。 (是的,我确信它应该打印错误,因为我在file 中添加了一堆乱码,甚至是不应该运行的代码,例如在return 语句中添加了明显不正确的缩进)。所以,本质上,Enthought Canopy 并没有意识到我已经更新了file

但是,如果我保存并退出所有内容,重新打开 Enthought,选择“更改为编辑器目录”,然后运行test_file,它会打印出正确的结果。

这很令人沮丧,因为在我意识到这一点之前,我花了几天时间调试正确代码。这让我非常担心,因为我不知道我过去测试的是否真的正确,而且我不希望这种情况在未来发生。

这可能是什么原因? (注意:我不知道这是Enthought问题还是Python问题)

【问题讨论】:

    标签: python python-2.7 debugging enthought


    【解决方案1】:

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

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

      import file
      reload(file)
    

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 2014-11-10
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多