【问题标题】:Spyder doesn't detect changes in imported python filesSpyder 未检测到导入的 python 文件中的更改
【发布时间】:2018-05-23 16:18:54
【问题描述】:

我正在使用 Spyder 3.2.4 (Python 3.6)。 Spyder 不会检测到导入的 python 文件的变化。例如:

test2.py:

def func():
    return 5

test1.py:

import test2

a = test2.func()
print(a)

当我编写这些类并将它们保存(在同一个工作目录中)并运行 test1.py 时,输出为 5

但是当我将 test2.py 中的函数更改为喜欢时:

def func():
    return 10

保存,然后运行python1.py,我还是得到5。只有当我保存、退出 IDE 并返回时,我才会得到更改后的代码 (10)。

自从我开始使用 Spyder(到现在几个月)以来,这种行为就一直在发生,而且非常烦人。帮助将不胜感激。

【问题讨论】:

  • 不确定这是否与 spyder 相关。您可以尝试使用importlib.reload
  • 当我将 Intellij IDE 与 python 插件一起使用时,它不会发生,所以我很确定它与 Spyder 相关。
  • 我的意思是这是一个python特性。如果您导入一个模块,在后台更改它,然后再次导入,python 将不会接受更改。您要么必须重新启动解释器,要么可以使用importlib.reload
  • 哇,谢谢。现在可以了。我不知道。在intellij中它会自动发生吗?回答作为问题的答案,所以我将能够接受它。

标签: python python-3.x import ide spyder


【解决方案1】:

您遇到的是 Python feature。模块在首次导入时被初始化并保存在缓存中。后续每次导入都会使用缓存,因此模块代码不会再次运行。

在大多数情况下是非常合理的经济,但在发展时却相当烦人。您可以使用 importlib.reload 强制 python 重新加载模块。

【讨论】:

    【解决方案2】:

    这里是 Spyder 维护者)这是一个 know issue,它将在我们的 3.2.5 版本中修复,将于 2017 年 12 月发布。 p>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      相关资源
      最近更新 更多