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

What's the advantage of having requirements point directly to git repository rather than 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

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

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

PyPI is not so important nowadays Is is true?

完全没有。在 PyPI 上发布的优势:

  1. 可以在 PyPI 上发布 wheel,因此 pip install package 下载 platform-specific wheel。

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

3a. pip 缓存下载的包,因此它不会 re-download 每个虚拟环境的包。它通过它们的原始 URL 进行缓存,并且 PyPI 的 URL 是稳定的。

3b。 pip 非常糟糕地缓存克隆的存储库。通常它 re-clones a-new 整个存储库。