Python 原生包管理工具 pip 即将发布新版本,一项长期困扰开发者的限制终于得到解决。过去,如果开发者希望只安装某个包的依赖项,而不安装包本身,几乎没有官方支持的便捷方式。要么手动从包中提取依赖列表逐一安装,要么干脆把整个包都装上。
为什么这是个问题?
有些场景下,开发者只需要某个包的依赖——例如,为测试或其他项目创建独立的运行环境。在通过 CI 构建源代码发行版时,某些依赖项(如 Cython)是构建过程所必需的,但并不会被打包进发行版本身。此时就需要在项目之外单独安装这些构建依赖,以完成构建步骤。
"仅安装依赖"模式是社区长期以来的呼声。开发者 James O'Claire 整理了大量类似请求及各种变通方案,其中绝大多数依赖第三方工具实现。
pip 26.2 将从根本上解决这一问题。新版本引入命令 `pip install --only-deps`,可以只安装指定包的运行时依赖项,而不安装包本身。需要注意的是,该命令不包含构建依赖,仅覆盖运行时依赖。
实际上,现有的第三方工具已能实现类似功能,例如 `uv sync --no-install-project` 具备相同的行为。但将这一能力直接内置于 pip,意味着开发者无需借助外部工具或临时变通方案。这也体现出像 uv(一款极速 Python 包安装器)这类第三方项目正在推动 Python 原生功能的演进与完善。
pip 26.2 计划于 2026 年 7 月底正式发布。
Q&A
Q1:pip install --only-deps 命令具体能做什么?
A:`pip install --only-deps` 是 pip 26.2 新增的命令,作用是只安装指定包的运行时依赖项,而不安装包本身。它适合需要单独搭建依赖环境的场景,例如为测试创建隔离环境,或在 CI 构建源代码发行版时安装构建所需依赖。需要注意,该命令不涵盖构建依赖,仅处理运行时依赖。
Q2:pip 26.2 什么时候发布?
A:pip 26.2 计划于 2026 年 7 月底正式发布。
Q3:在 pip 26.2 之前,如何实现只安装依赖不安装包本身?
A:在 pip 原生不支持该功能的情况下,开发者通常依赖第三方工具解决。例如,使用 uv 工具执行 `uv sync --no-install-project` 可以实现相同效果。此外,也有人手动从包的配置文件中提取依赖列表再逐一安装,操作较为繁琐。