pip:根据包名选择索引 url?

use*_*436 6 python pip

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

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

sin*_*roc 2

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

\n
\n

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

\n
\n

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

\n

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

\n

如果需要规避这种行为并重新控制这种情况,他们需要放置诸如simpleindexdevpipydist之类的东西之类的东西。

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

参考

\n\n