You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neovim LSP中pyright无法动态识别子文件夹代码变更问题

Neovim Pyright 跨文件新增方法无法实时识别问题

问题表现

  • 基于nvim-lspconfig与lsp-installer配置Neovim LSP,安装pyright作为Python语言服务,初始状态无额外配置可正常使用
  • 异常:子文件夹类中新增方法后,跨文件访问时pyright无法识别;仅重启Neovim,或打开对应定义文件再关闭后,pyright才可识别新增方法,执行:LspRestart命令无改善效果

已尝试操作

  1. 为pyright添加如下配置,未解决问题:
return {
    settings = {
        python = {
            analysis = {
                autoSearchPaths = true,
                diagnosticMode = "workspace",
                useLibraryCodeForTypes = true,
            }
        }
    },
}
  1. 执行:LspLog查看日志,未发现指向问题根源的有效信息,日志内容如下:
[START][2022-07-15 11:11:05] LSP logging initiated
[WARN][2022-07-15 11:11:09] ...lsp/handlers.lua:109 "The language server pyright triggers a registerCapability handler despite dynamicRegistration set to false. Report upstream, this warning is harmless"
[WARN][2022-07-15 11:11:09] ...lsp/handlers.lua:456 "stubPath typings is not a valid directory."
[WARN][2022-07-15 11:11:20] ...lsp/handlers.lua:109 "The language server pyright triggers a registerCapability handler despite dynamicRegistration set to false. Report upstream, this warning is harmless"
  1. 查阅pyright官方设置文档,未找到对应解决配置项

项目结构

当前项目目录规则:

  • 根目录放置入口文件main.py
  • 其余源码文件存放在**无__init__.py**的program/文件夹下
  • program/内的子文件夹(如core/)均自带__init__.py文件

其中core/__init__.py内容:

from .myClass import myClass

main.py中导入调用逻辑:

from subfolder.core import myClass
myClass.newMethod() # 仅关闭重开对应定义文件后,才可被pyright识别

问题根因

该问题既不是pyright bug,也不是配置缺失,核心原因是Python项目包结构不规范:
Python的包识别规则为,包含__init__.py的目录才会被判定为正规可导入包,pyright默认仅对纳入正规包范围的目录做实时文件变更监听。你存放核心源码的program/目录没有__init__.py,不会被pyright纳入实时索引范围,仅在文件被打开/关闭的瞬间做单次索引更新,因此会出现新增方法无法实时识别、必须关文件/重启编辑器才生效的现象。
日志中的两条警告均与该问题无关:registerCapability相关警告是pyright与nvim-lspconfig的已知兼容提示,不影响功能;stubPath typings警告仅提示未创建类型存根目录,不影响常规代码检查。

修复方法

在program/目录下新增空的__init__.py文件,将源码目录标记为正规Python包即可。修复后pyright会自动监听该目录下所有文件变更,新增、修改类方法后跨文件可实时识别,无需重启LSP或重开文件。


内容的提问来源于stack exchange,提问作者goTAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:06:43