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

使用--without排除依赖后Poetry Install仍因找不到目录崩溃

解决GitLab CI中Poetry排除分组仍报错本地路径依赖不存在的问题

核心原因

Poetry的--without参数只是跳过安装指定分组的依赖,但依然会校验所有依赖的配置合法性——包括本地路径依赖的存在性。所以哪怕你排除了cli分组,只要pyproject.toml里写了../cli-parser的路径,Poetry就会检查这个目录是否存在,不存在就报错。

可行解决方法

方法1:CI中同步克隆两个仓库到同级目录

既然依赖是相对路径,就在CI脚本里把主仓库和cli-parser仓库都克隆到同一个父目录下,让../cli-parser路径有效:

# 创建父目录,确保两个仓库在同级
mkdir -p repo-group
cd repo-group
# 克隆主仓库和依赖仓库
git clone <你的主仓库URL> main-repo
git clone <cli-parser仓库URL> cli-parser
# 进入主仓库执行安装
cd main-repo
poetry install --without cli --sync

这种方式完全保留原有依赖配置,适合暂时不想改依赖结构的场景。

方法2:将本地路径依赖改为私有Git仓库引用(推荐长期方案)

云CI环境本来就不适合本地路径依赖,直接把cli-parser改成私有仓库引用,适配Azure/GitLab的私有仓库访问:

  1. 修改pyproject.toml里的依赖配置:
[tool.poetry.dependencies]
# 替换原来的path="../cli-parser"
cli-parser = { git = "<你的私有仓库URL(Azure/GitLab)>", branch = "main" }
  1. 在CI脚本中配置Git凭证,让Poetry能拉取私有依赖(以GitLab为例,Azure类似用PAT令牌):
# 配置Git用CI_JOB_TOKEN访问私有仓库
git config --global url."https://oauth2:${CI_JOB_TOKEN}@gitlab.com/".insteadOf "https://gitlab.com/"
# 执行安装,此时即使排除cli分组,也不会校验本地路径
poetry install --without cli --sync

生产环境同样能通过这个配置拉取依赖,完全适配云环境,是长期迁移的最优解。

方法3:CI临时修改pyproject.toml(应急 workaround)

如果只是临时解决CI报错,不想动依赖配置或克隆逻辑,可以在CI里先删除cli-parser的依赖行:

# 用sed删除pyproject.toml中cli-parser的路径依赖配置(根据实际内容调整匹配规则)
sed -i '/cli-parser = { path = "\.\.\/cli-parser"/d' pyproject.toml
# 再执行安装
poetry install --without cli --sync

这种方式属于临时应急,不推荐长期使用,避免后续配置不一致导致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:45:39