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

如何用Poetry实现类似pip --extra-index-url的传递依赖解析功能?

使用Poetry实现企业内部多源依赖管理

可以实现,通过调整源配置和依赖指定方式即可匹配pip的行为,具体步骤如下:

1. 调整源优先级配置

将内部隔离仓库的优先级设为secondary(而非supplemental),确保Poetry优先从公网代理源解析依赖,仅在必要时尝试内部仓库:

[[tool.poetry.source]]
name = "artifactory_release"
url = "https://[COMPANY URL]/artifactory/api/pypi/pypi-release/simple"
priority = "primary"

[[tool.poetry.source]]
name = "artifactory_unstable"
url = "https://[COMPANY URL]/artifactory/api/pypi/python-internal-unstable/simple"
priority = "secondary"

2. 指定单个包的来源

在依赖列表中明确标记内部包的来源,确保仅该包从内部仓库拉取,其传递依赖自动走primary源:

[tool.poetry.dependencies]
python = "^3.10 <3.12"
numpy = "1.23.5"
pandas = "1.4.3"
[MY PACKAGE] = {version = "[VERSION NO]", source = "artifactory_unstable"}

3. 排查常见问题

  • 若仍出现解析错误,先清除内部仓库的Poetry缓存:
    poetry cache clear --all artifactory_unstable
    
  • 确保使用Poetry 1.2.0及以上版本,旧版本对包级源指定的支持存在缺陷。

原理说明

Poetry的包级source指定仅作用于目标包本身,传递依赖会严格按照primary > secondary > supplemental的优先级顺序查找。将内部仓库设为secondary后,只有当primary源找不到对应包时才会尝试它——你的内部包仅存在于artifactory_unstable,因此会被正确拉取;而其传递依赖则从可访问公网的artifactory_release源获取,完全匹配pip的--index-url+--extra-index-url逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:54:53