Spyder无法检测导入的Python文件中的更改。

3
我正在使用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 - Paul Panzer
当我使用带有Python插件的Intellij IDE时,这种情况并不会发生,因此我非常确定这与Spyder有关。 - sheldonzy
我的意思是这是Python的一个特性。如果你导入一个模块,在后台进行更改,然后再次导入,Python不会捕捉到更改。你要么需要重新启动解释器,要么可以使用importlib.reload - Paul Panzer
哇,谢谢。现在它可以工作了。我之前不知道这个。在Intellij中会自动发生吗?请回答问题,这样我就能接受它。 - sheldonzy
2个回答

2
你所经历的是 Python 的特性。模块在第一次导入时被初始化并保存在缓存中。每次后续的导入都使用缓存,因此模块代码不会再次运行。
在大多数情况下,这是非常合理的优化方式,但在开发过程中可能会非常烦人。你可以使用importlib.reload来强制重新加载一个模块。

2
Spyder维护者在此)这是一个已知问题,将在我们的3.2.5版本中修复,该版本将于2017年12月发布。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接