不能,uv list仅列出pyproject.toml或requirements.txt中声明的依赖,不显示实际安装的包;查已安装包及其版本应使用uv pip list或uv pip show。

uv list 能直接列出所有已安装包及其版本吗
不能。uv list 命令目前(截至 uv v0.4.21)**不支持直接列出当前环境中的已安装包**,它只用于查看 pyproject.toml 或 requirements.txt 中声明的依赖项(即“声明的依赖”,不是“实际安装的依赖”)。如果你运行 uv list 却没看到任何输出,大概率是因为当前目录下没有可解析的依赖声明文件,或者文件里没写 [project.dependencies] 或等效字段。
想查实际安装的包版本,该用 uv pip list
uv 兼容 pip 子命令,所以查已安装包得用:
uv pip list这会列出当前 Python 环境中所有通过
uv pip install(或兼容方式)安装的包及版本号,行为和 pip list 一致。常见实用变体:
-
uv pip list --outdated:只显示有新版本可升级的包 -
uv pip list --format=freeze:输出类似requests==2.31.0的格式,适合导出 -
uv pip list | grep requests:快速过滤某个包(Linux/macOS)
注意:uv pip list 查的是当前激活环境(如 uv venv 创建的虚拟环境)里的包,不是系统 Python 的 —— 如果没激活任何环境,它查的就是全局 Python site-packages。
为什么 uv list 和 uv pip list 容易混淆
名字相似但职责完全不同:
• uv list 是“静态分析型”命令,读取项目元数据,不碰 Python 环境
• uv pip list 是“运行时查询型”命令,真正调用安装器接口读取 site-packages
容易踩的坑:
Python uv 0.12.20 是 Astral 开发的 Python 包与项目管理工具,支持依赖解析、虚拟环境、Python 版本及项目锁文件管理。本下载包适用于 Windows x64,解压后可使用 uv 命令。
- 在没
pyproject.toml的目录下运行uv list,返回空或报错,误以为“没装包” - 用
uv list检查是否成功安装了某包,结果发现不显示 —— 因为它根本不管安装结果 - 忘记
uv pip list需要先激活目标环境,导致查错地方(比如在 base 环境里查 venv 的包)
想精确知道某个包的版本,推荐用 pip show + uv pip show
比 list 更精准的方式是:
uv pip show requests这会输出
requests 的详细信息,包括 Version、Location、Requires 等。它和 pip show 行为完全一致,且速度更快(uv 的底层解析更轻量)。
如果只想提取版本号本身(比如脚本中使用),可以加 --quiet 和管道:
uv pip show requests | grep "^Version:" | cut -d' ' -f2
注意:uv pip show 对未安装的包会报错 Package(s) not found: requests,这点和 pip show 一样,不是 bug。
真正容易被忽略的是:uv 的“双轨制”设计 —— 它把“声明依赖”和“运行时依赖”严格分开。查版本这件事,99% 的场景该走 uv pip list 或 uv pip show,而不是 uv list。

















