Poetry install --without ssh执行失败,如何忽略指定依赖组?
解决方案
首先明确问题根源:Poetry 1.x版本中,即使使用--without参数跳过指定依赖组,它仍会尝试解析所有依赖(包括私有Git仓库依赖)的元数据来构建完整的依赖图谱,这就导致了即使不安装ssh组,也会触发私有仓库的权限验证错误。
以下是两种最优解决方案:
方案一:用poetry export导出核心依赖后用pip安装
这种方法绕开了Poetry对所有依赖的强制解析,只处理需要安装的核心依赖:
- 在Dockerfile中替换原有的
poetry install --without ssh命令,改为:poetry export --without ssh --format requirements.txt --output requirements.txt && pip install -r requirements.txt - 该命令会将除
ssh组外的所有依赖导出为标准的requirements.txt,再通过pip安装,完全不会触及私有仓库的依赖解析。
方案二:临时修改pyproject.toml跳过私有依赖解析
如果不想切换到pip安装,可以在Docker构建过程中临时注释ssh组的依赖定义,安装完成后再恢复(适合需要保留Poetry安装流程的场景):
- 在Dockerfile中添加以下步骤:
注:该sed命令适用于Linux环境,若使用Windows容器需调整命令。# 临时注释ssh组的依赖 sed -i '/\[tool.poetry.group.ssh.dependencies\]/,/^\[/ s/^/#/' pyproject.toml # 执行安装(此时无需--without ssh参数) poetry install # 恢复pyproject.toml的原始内容 sed -i '/\[tool.poetry.group.ssh.dependencies\]/,/^\[/ s/^#//' pyproject.toml
补充说明
- 若你的构建环境可以访问私有Git仓库,也可以通过在Docker构建阶段注入SSH密钥来解决权限问题,但这不符合你"跳过该组依赖安装"的需求,因此不做优先推荐。
内容的提问来源于stack exchange,提问作者mxmrpn
相关产品推荐
相关产品推荐

