Pyright无法识别Poetry依赖,求Neovim的Lua配置方案
Poetry项目中Pyright无法解析导入及Vimscript转Lua配置方案
问题描述
- 在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定位到依赖路径。
- 需要将以下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
相关产品推荐
相关产品推荐

