![](/img/trans.png)
[英]Finding definitions of modules which are parameters with LSP (pyright)
[英]Neovim LSP: pyright server does not dynamically regognize changes in sub folders
我使用nvim-lspconfig和lsp-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__.py
的program/
文件夹中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.