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

标签 python 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 is not so important nowadays Is is true?

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

  1. 可以在 PyPI 上发布 wheel,因此 pip install package 下载特定于平台的 wheel。

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

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

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

关于python - 让需求直接指向 git 存储库而不是 PyPi 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63843082/

相关文章:

python - 我如何一次性将 x 的 n 个条目添加到列表中?

python - 内省(introspection)嵌套的 ctypes 结构

python - tkinter:如何更改 Canvas 项目上的光标?

python - 在 pypi.python.org 上,什么会导致显式搜索返回隐藏的旧版本

travis-ci - 使用 Travis-CI 将多个发行版部署到 PyPI 时防止冲突

python - 在 Bokeh 中在线性和对数刻度之间切换

python - Firestore 属性错误 : module 'firebase_admin' has no attribute 'firestore'

python - pypi 包的 apt 依赖项

python - 属性错误: module 'urwid' has no attribute 'Text'

python - 如何使用 Python 自动测试更新的依赖项?