【问题标题】:pip: selecting index url based on package name?pip:根据包名称选择索引 url?
【发布时间】:2020-11-05 23:18:13
【问题描述】:

我已经创建了一个本地私有包存储库。按照惯例,所有这些包都以标识前缀命名,例如 foo-package。这些包可能依赖于 PyPi 上可用的公共包。让我们假设在 PyPi 中使用相同名称的包没有风险。通过使用--index-url--extra-index-url,我可以在两者上进行点搜索。每次都会发生这种情况。

即使pip 在 PyPi 上找到一个包,它仍然会尝试在额外的 url 上找到它。我想要实现的是 pip 仅在包名称为 foo-* 时搜索额外的 url,并且仅在 PyPi 中搜索其他所有内容。这有可能吗?

【问题讨论】:

    标签: python pip


    【解决方案1】:

    据我了解,从 pipPyPI 的角度来看的哲学(我猜 PyPA 生态系统一般) 是 indexes 应该是不可区分的,可互换的。如果 2 个索引上存在 2 个同名项目,则应假定它们是完全相同的项目。并且应该假设 2 个具有相同名称和版本号的发行版是完全相同的发行版,因此我们从哪个发行版获取并不重要。换句话说:

    包在名称和版本上是唯一的,因此具有相同包名称和版本的两个轮子被 pip 视为无法区分。这是包元数据的特意设计的功能,不太可能改变。

    -- https://github.com/pypa/pip/issues/5045#issuecomment-369521345

    [不依赖直接 URL Library @ https://dists.tango.dev/library-1.2.3-xyz.whl 我现在不知道怎么做。但也许我遗漏了一些明显的东西。]

    如果需要规避这种行为并重新控制局势,他们需要设置devpipydist 之类的东西。

    • 对于 devpi,它的“继承”特性在这里显得尤为重要。据我了解,这是阻止从“错误”索引下载依赖项的关键功能(但不确定它是如何工作的以及如何进行配置)。
    • 对于 pydist:https://pydist.com/blog/extra-index-url
    • 可能在其他服务器中也可以...

    参考文献

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 2019-06-24
      • 2018-10-03
      相关资源
      最近更新 更多