Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

附录:PyPI 上安装程序使用情况分析

注意

此分析并不完美。虽然它使用了可获得的最佳数据,但企业使用的镜像、缓存以及其他混杂因素可能会影响本分析中的数字。请将这些数字视为趋势,而非具体可靠的数值。

关于 PEP 777 的一个相关问题是,Python 用户多久更新一次他们的安装程序。如果用户更新得相当频繁,兼容性问题就不那么重要了;当新功能添加时,用户届时已经更新。另一方面,如果用户经常使用旧版安装程序,那么 PyPI 上不兼容的 wheels 将产生更广泛的影响。为了弄清楚最新安装程序与过时安装程序的相对份额,我们可以使用 PyPI 的下载统计数据。

PyPI 发布了一个 BigQuery 数据集,其中包含 PyPI 收到的每次下载的信息,包括可用时安装程序的名称和版本。以下查询用于收集本分析的数据。

#standardSQL
SELECT
  details.installer.name as installer_name,
  details.installer.version as installer_version,
  COUNT(*) as num_downloads,
FROM `bigquery-public-data.pypi.file_downloads`
WHERE
  -- Only query the last 6 months of data
  DATE(timestamp)
    BETWEEN DATE_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 6 MONTH), MONTH)
    AND CURRENT_DATE()
GROUP BY `installer_name`, `installer_version`
ORDER BY `num_downloads` DESC

有了原始数据,我们就可以开始调查从 PyPI 下载软件包的安装程序的最新程度。下表显示了在 2024 年 3 月 10 日至 2024 年 9 月 10 日这六个月期间,PyPI 上所有下载按安装程序名称的细分情况。

A pie chart breaking down PyPI downloads by installer. pip makes up 87.5%, uv makes up 4.8%, poetry makes up 3.0%, requests makes up 1.6%, and "null" makes up 2.1%.

如上所示,pip 是此时间段内最受欢迎的安装程序。为了简化起见,在考虑安装程序的最新程度时,本分析将重点关注 pip 安装。pip 已经存在很长时间,因此分析用于下载软件包的 pip 版本应该能让我们了解用户更新其安装程序的频率。下表显示了在同一六个月期间,PyPI 上的安装情况细分,现按 pip 安装程序主版本分组。pip 使用日历版本控制,因此来自 pip 20.x 的安装意味着用户已四年未更新其 pip。

A pie chart breaking down PyPI downloads by pip major version. 24.x makes up 47.7%, 23.x makes up 19.9%, 22.x makes up 10.5%, 21.x makes up 13.9%, 20.x makes up 5.4%, and 9.x makes up 1.9%.

超过三分之二的用户目前运行的是今年或去年的 pip 版本。然而,约有 7% 的用户使用的是至少四年前的版本(!)。这表明有一部分用户不会定期更新其安装程序。

回到 PEP 777 的最初问题,在 PyPI 上发布主版本为 2 的 wheels 时应谨慎,因为它们很可能会给一小部分但不无显着比例的用户带来问题,这些用户不会定期更新其 pip。