见我 杂函 思绪 造物 耕录

LazyVim 中 Pyright 无法识别 uv 虚拟环境

2025 年 11 月 20 日

·

阅时约 1 分

tl;dr: 解决 LazyVim 编辑 Python 时 Pyright 找不到 typer 的问题

问题

在 LazyVim 中编辑 .py 文件时,import typer 始终报 “cannot resolve typer”。通过 uv 已经安装依赖,项目运行正常,但编辑器的类型检查器依旧报错。

根因

Pyright 并不知道你的虚拟环境位置。即便 uv 已安装模块,LSP 仍需要明确的 Python 解释器路径或虚拟环境配置。

解决方法

方法 1:选择 Python 解释器(推荐)

在 LazyVim 中按 <leader>cv,或运行:

:lua vim.lsp.buf.execute_command({ command = 'python.setInterpreter' })

选择 uv 生成的虚拟环境后,Pyright 会立即指向正确的解释器。

方法 2:创建 pyrightconfig.json

在项目根目录新建:

{
  "venvPath": ".",
  "venv": ".venv"
}

若 uv 使用默认 3.11,可写:

{
  "venvPath": ".",
  "venv": ".venv",
  "pythonVersion": "3.11"
}

方法 3:使用 pyproject.toml

[tool.pyright]
venvPath = "."
venv = ".venv"

方法 4:重启 LSP

当配置已就绪但诊断仍旧,执行:

:LspRestart

检查虚拟环境路径

确认 uv 的虚拟环境位置:

uv venv --help  # 查看默认位置
which python    # 激活虚拟环境后运行

通常 uv 会在项目根目录创建 .venv。

验证配置

执行:

:LspInfo

检查 Pyright 的 root directory 与 Python path 是否指向 .venv/bin/python。最简单的方式仍是使用 方法 1 的 <leader>cv 快捷键直接选择解释器。