PyPI Stats

All stats below are based on information retrieved from PyPI (the Python Package Index).

There are a few limitations on the information that can be retrieved from PyPI:

  • Some historical data may be lost if a package author have removed a released package from PyPI.
  • If a package hosts it's release files in an external location (not at PyPI), this release is not computed in our stats.

Data last updated on 2017-02-17

Total number of package releases per month

The orange bars in the chart show the growth in percentage relative to same month of the previous year.

Vertical markers shows the date of new Python releases.

PyPI was created in 2005 and the number of releases is still growing exponentially!

Number of new packages created per month

Here, we consider only the date a package is created - the date of the first release of each package.

Contrary to what some feared, the introduction of Python 3 seems to had no negative influence in the growth of Python community during the "transition" phase.

Python version supported by packages

The classification of which version each package supports is based on trove classifiers from package metadata.

Values are in percentage for the given month.

Here, only the last release of a package is considered. So be careful before taking conclusions on past data.

The use of trove classifiers to indicate supported version started in 2008, its usage is growing but more than 40% of packages still do not use it.
While the proportion of python2-only is stable, the number of python3-only and specially python2 and python3 is growing.

Compare this with the proportion of downloads.


Most popular keywords used to describe packages (as set by package authors).

Package grouped by age

For some kinds of stats it makes sense to divide the packages into groups based on its age. I.e. older packages are expected to have made more releases that young packages.

The young packages are divided in periods of 1.5 year. This is somewhat arbitrary, it was chosen to reflect the release cycle of the Python language.

More than 40% of the packages were created in the last year and a half.

Releases per package

Percentage of number of releases in the given package age cohort.

Around 25% of packages makes only one release. And only 50% makes more than 3 releases.

Interval between releases

Interval (in months) between two consecutive releases of a package.

Results are displayed in accumulated percentage of all releases of all packages.

I.e. month 3 shows percentage of all releases that were done in 3 months or less since the previous release of the package

Less than 2% of all releases are done after 1.5 years since the previous release.

Package maximum release interval

Here we take in consideration only the longest interval between releases from each package.

Packages are divided in groups based on its age.

For packages that are older than six years, up to 10% of packages make new releases after 3 years or more of inactivity!

More charts coming soon...

More charts coming soon... follow us on Twitter to receive update notifications.

Do you have an idea for a chart? Let us know on Twitter or Github.