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

Pyright无法识别Poetry依赖,求Neovim的Lua配置方案

Poetry项目中Pyright无法解析导入及Vimscript转Lua配置方案

问题描述

  1. 在Poetry项目中,本地依赖安装在~/.cache/pypoetry/virtualenvs/目录下,Neovim中的Pyright提示无法解析import语句,当前pyrightconfig.json配置如下:
{
    "venvPath": ". /home/ajanb/.cache/pypoetry/virtualenvs/",
    "venv": "tools-configfactory-materialmodel-jnEEQvIP-py3.10"
}

需要解决如何通过pyproject.toml配置或其他方式让Pyright定位到依赖路径。

  1. 需要将以下Vimscript配置转换为Lua代码,添加到Neovim配置文件中:
au FileType python let b:coc_root_patterns = ['.git', '.env', 'venv', '.venv', 'setup.cfg', 'setup.py', 'pyrightconfig.json']

解决方案

一、修复Pyright无法解析导入的问题

方法1:修正pyrightconfig.json配置

你的venvPath字段中多了一个空格,导致路径识别错误,修正后配置如下:

{
    "venvPath": "/home/ajanb/.cache/pypoetry/virtualenvs/",
    "venv": "tools-configfactory-materialmodel-jnEEQvIP-py3.10"
}

保存配置后重启Neovim,Pyright即可正确识别虚拟环境内的依赖包。

方法2:通过pyproject.toml配置Pyright

在项目根目录的pyproject.toml中直接添加Pyright相关配置,无需单独维护pyrightconfig.json:

[tool.pyright]
venvPath = "/home/ajanb/.cache/pypoetry/virtualenvs/"
venv = "tools-configfactory-materialmodel-jnEEQvIP-py3.10"

额外兜底方案

如果上述配置仍不生效,可以手动指定虚拟环境的site-packages路径到Pyright的extraPaths中:

{
    "extraPaths": [
        "/home/ajanb/.cache/pypoetry/virtualenvs/tools-configfactory-materialmodel-jnEEQvIP-py3.10/lib/python3.10/site-packages"
    ]
}

或者在pyproject.toml中添加:

[tool.pyright]
extraPaths = ["/home/ajanb/.cache/pypoetry/virtualenvs/tools-configfactory-materialmodel-jnEEQvIP-py3.10/lib/python3.10/site-packages"]

二、Vimscript转Lua配置

将指定的Vimscript转换为等价的Lua代码,直接添加到Neovim的Lua配置文件中即可:

vim.api.nvim_create_autocmd("FileType", {
    pattern = "python",
    callback = function()
        vim.b.coc_root_patterns = {'.git', '.env', 'venv', '.venv', 'setup.cfg', 'setup.py', 'pyrightconfig.json'}
    end
})

内容的提问来源于stack exchange,提问作者Mario Black

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:20:22