首页 > 解决方案 > 如何在编辑模块后让 vscode 检测/自动重新加载模块?

问题描述

我已经看到一些问题在问这个问题,但没有一个解决方案对我有用。

我正在不同模块中开发一些函数/类,并有一个main.py调用所有内容的脚本。

问题是,当我对另一个模块中的函数进行更改时,即更新后module1.py调用该函数时,VSCode 没有检测到更改main.py,它仍然是旧版本。

我可以通过执行以下操作来解决此问题:

from importlib import reload
reload module1

但这很快就会变老,尤其是当我从模块中导入特定的函数或类时。

简单地在我的顶部重新运行导入main.py实际上并没有做任何事情,我只能在我杀死 shell 并从头开始重新打开它的情况下这样做,如果我正在逐步开发某些东西,这并不理想。

我已经阅读了一些可以包括以下内容的问题:

"files.useExperimentalFileWatcher" : true

进入我的settings.json,但它似乎不是我的版本 1.45.1 中的已知配置设置。

这是 Spyder 默认处理的事情,并且在从您正在开发的 pkg 中的多个模块调用函数和类时,可以很容易地进行增量编码。

如何在 VSCode 中实现这一点?需要明确的是,我不想使用 IPython autoreload 魔术命令。

非常感激

仅供参考,这是我看到的其他问题,但没有得到有效的解决方案,其中包括类似的问题/答案:

链接1 链接 2

标签: pythonvisual-studio-codemodulereload

解决方案


VS Code 中不支持这一点,因为 Python 的重新加载机制不够可靠,无法在 REPL 之外使用,即使那样你也应该小心。这不是一个完美的解决方案,并且可能导致陈旧的代码撒谎,这很容易让你绊倒(我知道这一点,因为我写了importlib.reload())。


推荐阅读