点:根据包名选择索引网址?

时间:2019-09-26 18:26:49

标签: python pip

我已经创建了本地私有软件包存储库。按照惯例,所有这些软件包都以标识前缀来命名,例如foo-package。这些软件包可能取决于PyPi上可用的公共软件包。假设不存在在PyPi中使用相同名称的软件包的风险。通过将--index-url和--extra-index-url结合使用,我可以对两者进行点子搜索。这将每一次发生。

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

谢谢。

2 个答案:

答案 0 :(得分:1)

据我了解,从 pip PyPI (我猜想 PyPA 生态系统)是索引应该是不可区分的,可互换的。如果两个索引上存在两个同名项目,则应假定它们是完全相同的项目。并且应将具有相同名称和版本号的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
  • 在其他服务器上也可能...

参考

答案 1 :(得分:0)

您可以尝试在pip installconstraints.txt文件中内联指定requirements.txt选项:

alpha
foo-bravo --index-url https://private-pypi.org/simple
charlie
foo-delta --index-url https://private-pypi.org/simple