Python download stats for March 2022

Previously: May 2020 and March 2019

Every now and then I’m given permission to pull the access logs for python.org downloads and run some analysis. We don’t currently have a pipeline set up to make this data publicly available, but I’ll share my high level analysis here and am happy to take requests for specific queries.

Hits

Compared to previous years, we don’t seem to have suffered as badly from bots and broken CI systems skewing these results. However, it’s worth comparing with the “uniques” section below - the real number will be somewhere in between.

Python downloads by version

All successful hits on any of the listed download files.

(Note that the longest Windows bar runs much further to the right, but I trimmed the graph so the rest are readable.)

major_version Windows_Hits macOS_Hits Source_Hits
3.11 183,320 14,231 18,202
3.10 18,144,282 815,171 822,459
3.9 3,870,486 251,696 1,781,579
3.8 3,325,248 157,246 1,705,199
3.7 2,663,843 129,363 2,847,392
3.6 2,176,307 75,868 1,298,235
3.5 468,031 40,727 320,189
3.4 295,046 26,104 154,923
3.3 143,976 25,170 122,087
2.7 1,936,431 134,600 876,748

Unique downloads by version

Distinct IP addresses with hits on any listed download files, accumulated across minor versions (that is, if someone downloads “3.10.1” twice and “3.10.2” four times, they will count as 2 for “3.10” - one per minor version).

(Same deal as with the previous one- the longest Windows bar extends well beyond the chart.)

major_version Windows_Unique macOS_Unique Source_Unique
3.11 50,112 3442 4591
3.10 4,231,883 316,621 258,287
3.9 1,020,334 68,628 334,867
3.8 599,560 28,891 337,310
3.7 615,871 31,114 318,928
3.6 334,036 16,299 393,984
3.5 160,653 8447 38,249
3.4 45,427 5163 12,615
3.3 47,312 4526 6499
2.7 371,622 40963 119,541

Hits by minor version

Full details in the big table below, but here are the highlights:



Data table by minor version
major_version version Windows_Hits Windows_Unique macOS_Hits macOS_Unique Source_Hits Source_Unique All_Hits All_Unique
3.11 3.11.0 183320 50112 14231 3442 18189 4587 215740 58141
3.10 3.10.4 3897055 965844 202053 80115 99154 36640 4198262 1082599
3.10 3.10.3 4113899 1054323 196506 82405 131430 54412 4441835 1191140
3.10 3.10.2 9357471 2045081 364759 142984 477366 135470 10199596 2323535
3.10 3.10.1 221532 27059 20329 2802 28802 6721 270663 36582
3.10 3.10.0 554325 139576 31524 8315 85701 25041 671550 172932
3.9 3.9.12 239257 52220 15005 4535 65628 16835 319890 73590
3.9 3.9.11 260628 65176 17989 5489 64127 18454 342744 89119
3.9 3.9.10 1167364 257084 87277 33063 461699 110239 1716340 400386
3.9 3.9.9 119704 29751 25500 3722 406323 40461 551527 73934
3.9 3.9.7 1034664 340632 17497 4026 96945 25164 1149106 369822
3.9 3.9.6 119852 31360 9693 2777 142102 20000 271647 54137
3.9 3.9.5 147816 41822 12671 1607 103100 32148 263587 75577
3.9 3.9.2 171080 23852 25523 2640 62397 10849 259000 37341
3.9 3.9.1 63853 17831 8299 2784 130227 21816 202379 42431
3.9 3.9.0 371667 128338 19017 5275 177945 22190 568629 155803
3.8 3.8.13 3 3 0 0 210969 47390 210972 47393
3.8 3.8.12 0 0 0 0 412365 76914 412365 76914
3.8 3.8.10 616637 140695 92902 11569 149936 31801 859475 184065
3.8 3.8.9 133929 39571 8858 1565 102267 27080 245054 68216
3.8 3.8.8 181879 46666 5999 1585 65053 21492 252931 69743
3.8 3.8.7 110078 28463 3811 1062 61869 18463 175758 47988
3.8 3.8.6 1315361 63690 5020 1618 59544 11854 1379925 77162
3.8 3.8.5 162101 36669 4104 1269 101761 20819 267966 58757
3.8 3.8.2 197666 58390 9891 2930 189499 25487 397056 86807
3.8 3.8.1 128603 31954 4065 1024 101652 10115 234320 43093
3.8 3.8.0 337683 109582 16610 4615 111951 18412 466244 132609
3.7 3.7.12 0 0 0 0 339690 54078 339690 54078
3.7 3.7.10 0 0 0 0 344454 22793 344454 22793
3.7 3.7.9 376783 80988 42560 8664 172762 41409 592105 131061
3.7 3.7.8 628182 174431 5146 1446 925907 10692 1559235 186569
3.7 3.7.7 358203 71041 5557 1507 67095 19510 430855 92058
3.7 3.7.6 121316 33260 7874 2026 54713 10537 183903 45823
3.7 3.7.5 88131 28426 8405 1988 88504 12953 185040 43367
3.7 3.7.4 141217 36438 17837 4522 143826 13768 302880 54728
3.7 3.7.3 138015 34253 7434 1961 241470 14188 386919 50402
3.7 3.7.2 138765 32845 6375 1539 148416 39402 293556 73786
3.7 3.7.0 597767 98035 21242 5846 126921 24282 745930 128163
3.6 3.6.8 1387730 82427 31757 5536 488093 221464 1907580 309427
3.6 3.6.6 99992 28152 4503 968 65364 23836 169859 52956
3.6 3.6.5 94779 23782 6418 1611 72565 8449 173762 33842
3.6 3.6.4 105684 26095 3274 788 51879 5916 160837 32799
3.6 3.6.0 223989 82935 11982 2806 81393 12524 317364 98265
3.5 3.5.0 196242 81904 21851 4099 75975 4980 294068 90983
3.4 3.4.1 151442 6129 3408 756 9669 680 164519 7565
2.7 2.7.18 621385 127251 46946 20134 277615 56111 945946 203496
2.7 2.7.15 329423 65843 5386 1433 85623 11393 420432 78669
2.7 2.7.11 28831 8029 3978 854 180983 2815 213792 11698
2.7 2.7.10 208151 9977 4382 977 13482 2331 226015 13285
2.7 2.7.1 199338 5875 3779 858 5676 631 208793 7364
3 Likes

I didn’t include the breakdown of unique users by OS above, but probably should’ve. It’s more an indicator of bias in this data than a reflection of our community - the absolute numbers are more informative though.

These are counting unique IPs downloading files listed on download pages.

OS Count
Windows 7,574,392
macOS 533,078
Sources 1,851,633
2 Likes

I’m also, of course, happy to do other queries. I’ve run plenty to help validate various things that can go wrong with this kind of data,[1] and it mostly all checks out, so I didn’t bother getting too detailed.

As usual, I want to keep this aggregated but fairly raw, because it’s only one source of data. Someone trying to infer anything about our community at large should use other sources as well.


  1. e.g. do some user agents make multiple requests per download (probably) and is it enough to matter (probably not); what kind of failures appear in these logs (416 mainly - requesting an invalid range). ↩︎

Hi Steve!

Thanks for an interesting research! Are your access logs just for a month or for a longer period?

It’s interesting that 3.10 is a clear favorite among Windows and macOS installers but there is no visible peak among downloads of the source code. Seems like source code consumers even prefer to download older Python versions. Is this because many Linux distros include fresh Python installation out of the box but don’t provide older versions?

Just the month. That’s over 300GB of logs, so I wasn’t really keen to significantly increase the amount I had to process.

I suspect people haven’t migrated their automatic download/build systems to 3.10 yet. Linux distros tend to provide older versions anyway, rather than the latest (because stability > cutting edge for their purposes, quite rightly). It may also be that it’s more convenient for the people who do work from source to clone the git tag instead? I really don’t know what goes on here, but yes, it is interesting that the source downloads don’t follow the pattern of the binaries.

1 Like

It may be too late, but any chance that the windows hits could be broken down between 32 and 64 bit?

I think I’ve still got this data stored, so I can go and check. But I suspect the vast majority is still whichever button is the default. (Most users don’t think about architecture, but those few who do are blocked if it’s not available.)

It’s probably time to do another round of analysis, especially now there’s an ARM64 installer as well…

1 Like

Adding all numbers from the first table gives 44,824,159, that’s 1,445,940 per day. A recent PSF article says Python “may be downloaded from our website, and a version of Python is downloaded over 300 million times per day”. Is that talking about something different than what you analyzed? Or did the downloads really skyrocket from 1.4 million per day to over 300 million per day?

I have no idea, sorry. I’m not involved in posts like that.

It seems like an inaccurate statement, though. I’ve never seen any numbers from any source that would suggest 300 million a day.

Yeah, 300 million sounded incredibly high, that’s why I looked for more infos.