Pip versions in the wild

Apologies if there is somewhere obvious to find this info, or if the question has been asked before. I tried and couldn’t find anything that answered my question.

Is there somewhere to find the percentage of active pip versions hitting pypi? I recognize it will hide a lot of corporate usage, but should still be a reasonable proxy of versions out there.

This information can be derived by Analyzing PyPI package downloads — Python Packaging User Guide. I don’t think anyone has publicly recorded this information outside of PyPI’s own BigQuery datasets.

You want details.installer.name to be pip, and group by details.installer.version.

1 Like

Out of curiosity, why do you want this information?

I’m curious how quickly versions upgrade to latest.

I completely recognize how flawed the numbers can be, but curious to know if it rolls out quickly because people run “pip install -U pip”.

Cool. That would be interesting to know - although given that we (the pip maintainers) don’t support older versions of pip, it’s mostly of academic interest to me.

As a counterpoint, you may be interested to know that if we roll out a version of pip with a bug[1] then we usually get bug reports coming in within a matter of hours. There’s a lot of people who download and run the latest version of pip in their CI[2]. I don’t know how much that will skew the figures.

  1. Don’t ask me how I know :slightly_frowning_face: ↩︎

  2. I’m not sure I think that’s a good idea, but it’s a reality we have to deal with. ↩︎

1 Like

https://pepy.tech is good for getting download numbers (although it includes mirrors). People upgrade pretty quickly.

Here’s the last three versions:


Adding * to compare with all releases:


All releases for each of the last three years, and all:


1 Like

Awesome! Thanks! That’s a very useful site and was precisely what I was looking for.

Seems that updates roll out very quickly for pip. Seems it reaches over 50% in a matter of days.

Hang on - is that downloads of pip, or downloads with pip? I thought @groodt wanted the latter.

Assuming it is downloads with pip, and therefore is based on pip’s user-agent string, it would be interesting to exclude runs in CI (there’s a ci=True/None value in there).


That’s downloads of pip, which is not really a relevant metric here—unless people have it pinned, or it is constrained by something else (neither of which is likely to be terribly common with pip itself), any download of pip will necessarily be the latest version, which indeed is reflected in the numbers. What is much more useful is the number of downloads of PyPI packages with a particular version of pip—which is tracked in the BigQuery DB, but I’m not aware of a site that exposes it easily aside from a few static analyses.


Is the ci=True/None value in the Warehouse BigQuery data? It would indeed be very interesting to filter that.

I ran out of my free-tier BigQuery quota for this. :sweat_smile:

  details.installer.version, COUNT(*) AS num_downloads
  details.installer.name = "pip"

(taking the top 10)

version num_downloads
23.1.2 4,955,986,075
21.0.1 2,355,308,186
23.0.1 2,056,143,512
21.3.1 1,422,681,379
21.2.4 1,347,027,557
23.2 1,243,037,542
20.2.2 957,329,662
22.3.1 734,328,566
9.0.3 634,097,376
22.0.4 601,557,061

(436.43 GB query size)



Yes, Paul was right, it needs to be the logs of downloads of other packages using pip.

The head of the distribution is still modern pip. 23.2.1 is rising quickly and I expect will be number 1 spot in 4 weeks. Apart from 9.0.3 in the top 10, it does seem that the ecosystem benefits from new versions quite quickly.

1 Like