尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

pip会读取 pyproject.toml 的 project.dependencies 字段进行依赖安装吗?

pip会读取 pyproject.toml 的 project.dependencies 字段进行依赖安装吗?
📅 发布时间:2026/6/20 16:23:08

这是一个非常重要且常见的问题,答案是:

通常不会 —— pip 本身不会直接从 pyproject.toml 的 project.dependencies 字段安装依赖,除非你正在安装当前项目本身(例如 pip install . 或 pip install -e .)。


详细解释

✅ 情况一:你运行 pip install .(安装本地项目)

  • 如果项目使用 PEP 621 标准(即 pyproject.toml 中有 [project] 表,包含 dependencies 字段),
  • 并且配置了兼容的 构建后端(如 setuptools >= 61, hatchling, pdm-backend, flit-core 等),
  • 那么 pip 会调用该构建后端,构建 wheel,并在安装项目的同时 自动安装 project.dependencies 中列出的依赖。

✅ 示例 pyproject.toml(PEP 621 格式):

[build-system]
requires = ["setuptools>=61"]
build-backend = "setuptools.build_meta"[project]
name = "my-package"
version = "0.1.0"
dependencies = ["requests>=2.25.0","click"
]

运行:

pip install .
# 或
pip install -e .

→ 此时 requests 和 click 会被自动安装。


❌ 情况二:你运行 pip install some-package(从 PyPI 安装)

  • pip 不会去读取 PyPI 上包的 pyproject.toml 文件;
  • 它读取的是该包在构建时生成的 metadata(如 METADATA 文件),其中依赖信息已经由构建后端写入;
  • 所以依赖安装是基于 已构建好的分发包(wheel/sdist)中的元数据,而不是原始 pyproject.toml。

❌ 情况三:你只是想“根据 pyproject.toml 安装依赖”,但不安装项目本身

比如你有一个 pyproject.toml,只想装它的依赖(类似 pip install -r requirements.txt),那么:

pip 无法直接做到这一点。

你需要:

  • 使用支持该功能的工具(如 hatch, pdm, poetry);
  • 或手动提取依赖并用 pip 安装。
✅ 替代方案示例:
  1. 使用 hatch(如果项目使用 hatchling):

    hatch env create
    hatch shell
    # 或直接安装依赖(不安装项目):
    pip install $(hatch deps)
    
  2. 使用 pdm:

    pdm install --no-self  # 只装依赖,不装项目
    
  3. 临时脚本提取并安装(假设符合 PEP 621):

    # install-deps.py
    import tomllib
    with open("pyproject.toml", "rb") as f:deps = tomllib.load(f)["project"]["dependencies"]
    import subprocess
    subprocess.check_call(["pip", "install"] + deps)
    

    然后运行:

    python install-deps.py
    

关键总结

场景 pip 会安装 pyproject.toml 中的 dependencies 吗?
pip install . 或 pip install -e . ✅ 会(前提是构建后端支持 PEP 621)
pip install package-from-pypi ✅ 会安装依赖,但不是直接读 pyproject.toml,而是读构建后的元数据
pip install -r pyproject.toml ❌ 不支持(pip 不接受 pyproject.toml 作为 requirements 文件)
仅想安装依赖而不安装项目 ❌ pip 无法直接实现,需借助其他工具或脚本

建议

  • 如果你使用现代 Python 打包(PEP 621),推荐搭配 setuptools + pip install -e . 进行开发;
  • 如果需要频繁管理依赖(增删改),建议使用 Poetry / PDM / Hatch 等专用工具;
  • 不要期望 pip 能像 npm 或 cargo 那样直接操作项目配置文件——它的职责是安装包,而不是管理项目配置。

相关新闻

  • python教程(一)
  • OpenAI Codex整合Z.ai GLM-4.6编程
  • 无状态HTTP的“记忆”高效的方案:Spring Boot中CookieSession全栈实战

最新新闻

  • 鸣潮自动化工具终极指南:基于YOLOv8图像识别的智能辅助解决方案
  • 2026帝王宫海鲜加工饭店排行榜:内行推荐这5家 - 官方资讯
  • [Windows]罗技G HUB(Logitech G HUB)旧版本下载地址汇总
  • 电瓶车托运不拆电池行吗?2026新规+省钱方案来了 - 快递物流资讯
  • 2026年北京发电机租赁、应急电源车租赁厂家名单及选购参考指南 - 海棠依旧大
  • 如何配置远程的ubuntu服务器以使在本地windows电脑上可以进行X11图形转发——ssh远程X11转发的配置

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号