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

如何分离Python包的运行时依赖与开发依赖?解决YATL工具PyPI安装时强制安装开发库的问题

搞定YATL的依赖膨胀问题(Poetry配置指南)

看起来你已经用Poetry的依赖分组功能找对了方向,只是之前的命令语法出了问题,咱们一步步来解决:

1. 先确认你的配置没问题

你的pyproject.toml分组配置是完全正确的:

  • 顶层dependencies是工具运行必须的核心依赖,默认会被安装
  • dev组是开发时用的检查、测试工具,examples组是示例代码的依赖,这两个组的依赖不会被默认安装

所以配置文件不用改,问题出在执行的命令上。

2. 修复你之前的错误命令

你写的rm -rf poetry.lock poetry install --without dev,examples把两个命令混在一起了,系统会把poetry install...当成rm的参数,肯定失效。正确的做法是分开执行或者用&&连接:

清理旧锁文件(可选但推荐,避免缓存干扰)+ 仅安装核心依赖:

rm -rf poetry.lock && poetry install --without dev,examples

这条命令执行后,只会安装requests、jinja2这些核心依赖,dev组的pytest、ruff等都不会被安装,完美符合普通用户的需求。

3. 普通用户通过PyPI安装的自动隔离

放心,当你把包发布到PyPI后,用户用pip install yatl-testing安装时,Poetry会自动只把顶层dependencies里的核心依赖打包进去,dev和examples组的依赖根本不会出现在PyPI的包元数据里——这是Poetry发布包的默认行为,完全不用你额外操心。

4. 开发者的一键全依赖安装

其他贡献者克隆仓库后,只需要一条命令就能装全所有开发相关的依赖:

# 安装核心+dev+examples依赖
poetry install --with dev,examples

# 如果不需要示例依赖,只装核心+dev
poetry install --with dev

要是想更便捷,还可以在pyproject.toml里加个自定义脚本:

[tool.poetry.scripts]
setup-dev = "poetry install --with dev,examples"

之后开发者只需要跑poetry run setup-dev就能一键搞定所有依赖安装。

5. 验证你的依赖环境

安装完成后,用poetry show命令可以查看当前环境的依赖列表:

  • 不带参数:只显示核心依赖
  • 加--with dev:显示核心+dev依赖
    这样就能快速确认分组是否生效了。

内容的提问来源于stack exchange,提问作者khabib73

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 09:19:08