将需求直接指向git存储库而不是PyPi的好处是什么?

问题描述

最近我问一个Python库维护者,他是否可以将其库的新标记版本上载到PyPI(https://pypi.org/)。 他表示, PyPI如今不那么重要 [1]。

是真的吗?人们(即您)确实倾向于不使用PyPI吗?如果是这样,您使用什么代替?为什么?

显然,requirements.txt允许您直接指定git存储库,而直接使用git+https://github.com/<repo>可以跳过PyPI。尽管我想不出使用PyPI有什么特别的优势。

是否有任何图表可以支持该语句?如果陈述正确,我希望从PyPI下载的数量(每个时间间隔)会随着时间减少。 PyPI将此类数据发布到Google BigQuery。现在已检查,下载次数如下:

202009    1565855136 -- the query was run on 11th of September 2020
202008    5155068175
202007    5409386519
202006    5211181171
202005    5108756961
202004    4812648839
202003    4670947975    
202002    4067963794
202001    4155726766
201912    3867376444
201911    3845881964
201910    3922992929
201909    3492788322    
201908    3374679723
201907    3338326277
201906    2998812162    
201905    3028973146
201904    2436032402
201903    2732697164

使用此查询获得:

SELECT
  SUBSTR(_TABLE_SUFFIX,1,6) AS `month`,COUNT(1) AS num_downloads
FROM `the-psf.pypi.downloads*`
WHERE
  _TABLE_SUFFIX BETWEEN FORMAT_DATE(
      '%Y%m01',DATE_SUB(CURRENT_DATE(),INTERVAL 18 MONTH))
  AND FORMAT_DATE('%Y%m%d',CURRENT_DATE())
GROUP BY `month`
ORDER BY `month` DESC

我知道这个问题可能没有正确的答案,因此可能未遵循StackOverflow提出的所有问题标准。但是我想不出更好的地方来问这个问题。

[1] https://github.com/lavr/python-emails/issues/139

解决方法

PyPI如今不那么重要是真的吗?

一点也不。在PyPI上发布的优势:

  1. 一个人可以在PyPI上发布轮子,因此pip install package下载一个平台特定的轮子。

  2. PyPI托管在CDN(内容交付网络)上,因此从PyPI下载速度很快。

3a。 pip缓存下载的程序包,因此它不会为每个虚拟环境重新下载程序包。它会使用原始URL进行缓存,并且PyPI的URL是稳定的。

3b。 pip非常糟糕地缓存了克隆的存储库。通常,它会重新克隆整个存储库。