繁体   English   中英

Neovim LSP:pyright 服务器不会动态识别子文件夹中的更改

[英]Neovim LSP: pyright server does not dynamically regognize changes in sub folders

我使用nvim-lspconfiglsp-installer设置 Neovim LSP,我还安装了pyright服务器。

没有任何进一步的配置,它开箱即用。 但是,当我在子文件夹中有 class 并添加新方法时,当我想在不同的文件中访问它时,pyright 无法识别此方法。 当我重新启动neovim,或者打开和关闭文件时,pyright突然识别出新添加的方法。

我也试过:LspRestart没有效果。

我尝试向 pyright 服务器添加一些设置:

return {
    settings = {
  python = {
    analysis = {
      autoSearchPaths = true,
      diagnosticMode = "workspace",
      useLibraryCodeForTypes = true,
    }
  }

    },
}

但这也没有效果。

: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"

在这里也找不到任何关于这个问题的设置来解决这个问题。

由于我是 python 的新手,因此我导入和构造类的方式可能并不常见,并且可能是导致此问题的问题。

  • 作为主要入口点,我在根文件夹中有main.py
  • 所有其他源文件都在没有__init__.pyprogram/文件夹中
  • program/里面有文件夹,每个文件夹都有一个__init__.py文件 fe core/

core/__init__.py

from .myClass import myClass

main.py我像这样导入它:

from subfolder.core import myClass
myClass.newMethod() # this is only recognized by lsp/pyright after the file is closed and reopen

问题是 pyright 中的错误(我猜不太可能),缺少设置还是我奇怪的文件夹/导入结构?

你可以试试这个:创建(或修改)pyproject.toml,把它放在项目根目录下。 在 pyproject.toml 中,添加以下行:

[tool.pyright]
extraPaths = ["program/core" ,"program/directory_2", "program/directory_3"]

这个想法是您必须手动添加子目录,这确实很乏味,但至少它适用于我的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM