如何解决Pyright的“Import [module] could not be resolved”导入警告?
解决Neovim LSP(Pyright)无法识别跨目录导入的问题
1. 精准配置Pyright的额外路径
先把pyrightconfig.json放在Projects根目录,内容要明确指向依赖目录,注意路径是相对配置文件的:
{ "extraPaths": ["Libs/PyLibs"] }
如果用pyproject.toml,就加这段:
[tool.pyright] extraPaths = ["Libs/PyLibs"]
配置完重启Pyright服务(:LspRestart pyright),别小看这一步,很多人栽在路径写错或者配置文件放错位置上。
2. 给PyLibs加个空的__init__.py
虽然Python 3支持无__init__.py的命名空间包,但Pyright对这类包的识别经常出问题。在Libs/PyLibs下新建个空的__init__.py,明确告诉Pyright这是个可导入的Python包。
3. 确认Neovim的工作目录是项目根
别从Tasks或Scripts子目录打开Neovim,一定要把工作目录设为Projects根目录。如果已经打开了,执行:cd /你的Projects路径切换;启动时也可以直接指定:
nvim -c "cd /你的Projects路径" Tasks/Scripts/test.py
Pyright是按当前工作目录找配置和解析路径的,工作目录不对,配置文件根本不会生效。
4. 强制刷新Pyright的配置缓存
有时候LSP会缓存旧配置,执行这两个命令强制刷新:
- 重启Pyright服务:
:LspRestart pyright - 手动触发配置重载:
:lua vim.lsp.buf.execute_command({command = "pyright.reloadConfiguration"})
5. 检查并更新Mason安装的Pyright版本
旧版Pyright可能有路径解析的bug,打开:Mason找到pyright,看看是不是最新版,不是的话直接更新。
6. 关联项目的虚拟环境(如果用了的话)
如果项目用了虚拟环境,得让Pyright对应上:
在pyrightconfig.json里加:
{ "python.pythonPath": "/你的Projects路径/venv/bin/python" }
或者在Neovim的LSP配置里写死:
require('lspconfig').pyright.setup{ settings = { python = { pythonPath = "/你的Projects路径/venv/bin/python" } } }
内容的提问来源于stack exchange,提问作者Manojit
相关产品推荐
相关产品推荐

