python - 如何在编辑模块后让 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 魔术命令。
非常感激
仅供参考,这是我看到的其他问题,但没有得到有效的解决方案,其中包括类似的问题/答案:
解决方案
VS Code 中不支持这一点,因为 Python 的重新加载机制不够可靠,无法在 REPL 之外使用,即使那样你也应该小心。这不是一个完美的解决方案,并且可能导致陈旧的代码撒谎,这很容易让你绊倒(我知道这一点,因为我写了importlib.reload()
)。
推荐阅读
- apache-spark - 在 spark.read teradata sql 查询中访问临时 spark 数据帧
- java - 使用 Redisson 活动对象的 WRONGTYPE 操作
- rest - Sharepoint 365 应用程序在租户中没有管理权限
- reactjs - 在 React Router v6 中,如何在离开页面/路由之前检查表单是否脏
- authentication - Hyperledger Explorer 登录页面 禁用
- leaflet - 传单:第一次加载地图时加载了多少瓦片?
- angular - Angular,ngClass,使用函数来评估元素类-性能和最佳实践方法
- python - 如何在单次通话中将字典发布到 Google 表格
- r - 更新 R 后安装包时编译错误
- azure - Set-AzureADUserPassword - 密码是否通过 AAD Connect 写回本地域?