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

Neovim中Mason安装的Pyright LSP无法正常工作求助

解决Neovim中Pyright无法识别Python根目录及导入的问题

核心原因

Pyright依赖项目根目录标记文件(如pyproject.toml、.git)定位工作空间,若Neovim的LSP客户端未正确检测到这些标记,就会出现无法识别导入、基础函数的问题。

解决方案

1. 确保项目根目录存在标记文件

Pyright通过以下文件识别项目根目录,确保你的项目根目录下至少有一个:

  • pyproject.toml(推荐,可新建空文件或填写基础配置)
  • setup.py/setup.cfg
  • .git(若项目已git初始化)
  • requirements.txt/Pipfile

示例空pyproject.toml:

[project]
name = "your-project-name"
version = "0.1.0"

2. 配置Pyright的根目录检测逻辑

如果使用lspconfig管理LSP,在Pyright配置中明确指定根目录检测规则:

require('lspconfig').pyright.setup({
  root_dir = require('lspconfig.util').root_pattern(
    'pyproject.toml',
    'setup.py',
    'setup.cfg',
    'requirements.txt',
    'Pipfile',
    '.git'
  ),
  -- 其他自定义配置
})

root_pattern会从当前打开的Python文件向上递归查找上述标记文件,找到第一个匹配的目录作为根目录。

3. 指定正确的Python环境(可选)

若Pyright未关联到项目虚拟环境,也会导致导入识别错误,可手动指定Python路径:

require('lspconfig').pyright.setup({
  settings = {
    python = {
      pythonPath = '/path/to/your/venv/bin/python', -- 替换为你的虚拟环境Python路径
      analysis = {
        autoSearchPaths = true,
        useLibraryCodeForTypes = true,
        diagnosticMode = 'workspace'
      }
    }
  },
  -- 加上上述root_dir配置
})

开启autoSearchPaths后,Pyright会自动扫描项目内的虚拟环境。

4. 重启LSP服务

修改配置后,执行:LspRestart pyright重启Pyright,或直接重启Neovim,再用:LspInfo检查是否已正确获取到Python根目录。

5. 确认使用Mason安装的Pyright

确保Neovim调用的是Mason安装的Pyright,可在配置中指定命令路径:

require('lspconfig').pyright.setup({
  cmd = { vim.fn.stdpath('data') .. '/mason/bin/pyright-langserver', '--stdio' },
  -- 其他配置
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:10:37