Neovim LSP: сервер пирайт не распознает динамически изменения в подпапкахPython

Программы на Python
Anonymous
Neovim LSP: сервер пирайт не распознает динамически изменения в подпапках

Сообщение Anonymous »

Я настроил Neovim LSP с помощью nvim-lspconfig и lsp-installer, где я также установил серверpyright.
Без какой-либо дополнительной настройки все заработало «из коробки». Однако когда у меня есть класс в подпапке и я добавляю новый метод, Pyright не распознает этот метод, когда я хочу получить к нему доступ в другом файле. Когда я перезапускаю neovim или открываю и закрываю файл, Pyright внезапно распознает новый добавленный метод.
Я также пробовал :LspRestart безрезультатно.
Я пытался добавить некоторые настройки на сервер Pyright:

Код: Выделить всё

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

},
}
Но и это не дало никакого эффекта. также не показывает ничего, что могло бы указывать на проблему:

Код: Выделить всё

[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 в корневой папке.
  • Все остальные исходные файлы находятся в папке program/, которая нет __init__.py
  • Внутри программы/ есть папки, в каждой из которых есть файл __init__.py, например. ядро/

Код: Выделить всё

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
Проблема связана с ошибкой в ​​пирайте (я думаю, маловероятно), отсутствующей настройкой или моей странной структурой папок/импорта?

Вернуться в «Python»