内容提要
PyPI于2026年8月24日调整下载计数,仅统计实际发行文件(如.whl、.tar.gz、.zip),排除元数据、签名等附属请求,使数据更准确。历史数据未变,但计数下降约39%。官方提醒下载量不宜作为流行度指标,未来将改进范围请求统计。
延伸解读
数据断层的含义
自2026年8月24日起,PyPI下载计数仅统计实际发行文件(.whl、.tar.gz、.zip),不再计入元数据、签名等附属请求。这导致计数曲线出现明显下降,且该变化是永久性的。若你依赖BigQuery数据集或pypistats.org等工具,需注意此断层并非数据错误,而是统计口径调整。历史数据未变,但对比前后数值时需谨慎,否则可能误判为下载量骤降。
约39%的“水分”从何而来
文章示例查询显示,在调整前,约39%的下载记录并非实际发行文件,其中大部分是PEP 658元数据请求(估计占40%)。安装工具为获取wheel元数据而请求.metadata文件,却被计为一次下载。此外,.asc签名、.egg及旧格式(如.exe、.msi)也不再计数。这解释了为何调整后计数显著下降,但实际用户下载行为并未改变。
下载量≠流行度
PyPI官方明确提醒,下载计数不应作为流行度或关键性的指标。计数易受代理缓存、CI系统异常、甚至人为刷量影响。本次调整仅消除了元数据请求带来的偏差,但并未解决其他干扰因素。因此,在评估包的使用情况时,应结合其他信号(如依赖关系、社区活跃度)综合判断,而非单纯依赖下载量。
未来改进:范围请求统计
当前HTTP 206部分内容响应与200完整下载被同等计数,导致仅读取wheel中央目录的少量字节也被记为一次完整下载。PyPI计划记录请求类型和实际传输字节数,以区分“字节服务”与“下载计数”。该工作尚未排期,但可关注GitHub issue #232和#252获取进展。这一改进将进一步提升计数准确性。
Q&A
PyPI下载计数调整的具体日期是什么时候?
PyPI于2026年8月24日调整了下载计数规则。
PyPI新的下载计数规则是什么?
新的规则只统计以.whl、.tar.gz或.zip结尾的实际发行文件请求,不再统计元数据、签名等附属请求。
为什么PyPI要调整下载计数?
因为之前的计数方式将元数据、签名等附属请求也计入下载量,导致数据虚高,调整后数据更准确。
PyPI调整下载计数后,下载量数据有什么变化?
调整后,下载量数据下降了约39%,因为排除了非发行文件的请求。
PyPI官方对下载量作为流行度指标持什么态度?
官方提醒下载量不宜作为流行度或关键性指标,因为下载量可能受代理缓存配置错误、CI系统异常或人为刷量等因素影响。
PyPI未来在下载计数方面有什么计划?
未来计划改进范围请求(206 Partial Content)的统计,记录请求类型和实际传输的字节数,以区分部分下载和完整下载。