You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单个pyproject.toml同时兼容Poetry与UV的开发依赖配置?

如何通过单个pyproject.toml同时兼容Poetry与UV的开发依赖配置?

我之前也碰到过一模一样的问题,目前最实用的解决方案就是在同一个pyproject.toml里同时维护两套开发依赖的配置区块——虽然看起来有点重复,但能让两个工具都乖乖识别到开发依赖:

  • 给UV用的[dependency-groups]区块:

    [dependency-groups]
    dev = [ "bandit ~= 1.8.3", ... ]
    

    这样UV执行uv install --group dev时,就能正确读取并安装开发依赖。

  • 给Poetry用的[tool.poetry.group.dev.dependencies]区块:

    [tool.poetry.group.dev.dependencies]
    bandit = "^1.8.3"
    ...
    

    这是Poetry的标准开发依赖写法,能确保poetry lock和poetry install把开发依赖包含到lockfile和安装流程里。

不过手动维护两套配置容易出错,这里分享个小技巧——用TOML的锚点和引用功能减少重复工作量:

# 先统一存一份开发依赖的版本定义
[tool.shared-dev-deps]
bandit = "~=1.8.3"
# 其他开发依赖也都集中放这里...

# UV 依赖组引用共享配置
[dependency-groups]
dev = [
    { version = tool.shared-dev-deps.bandit },
    # 其他依赖同理引用即可
]

# Poetry 开发依赖引用共享配置
[tool.poetry.group.dev.dependencies]
bandit = tool.shared-dev-deps.bandit
# 其他依赖同理引用即可

这样你只需要在[tool.shared-dev-deps]里修改依赖版本,两边的配置会自动同步,不用手动改两次,能省不少麻烦。

目前因为Poetry对PEP 621的开发依赖规范支持还没完全跟上,UV又是严格遵循PEP相关标准,所以暂时只能用这种双配置的方式过渡。等后续工具更新后,说不定就能统一成一套配置了。

备注:内容来源于stack exchange,提问作者Ken Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:35:27