Python Package Manager Shootout

Benchmarks of various operations for Python package managers. The benchmarks are generated from lincolnloop/python-package-manager-shootout.

The list of packages comes from Sentry's requirements.txt file which was chosen arbitrarily as a non-trivial real-world example. If you'd like to know about the methodology, more documentation and the actual benchmarking code is available in the repo.

For more information, see the project announcement.

Package Managers

The benchmarks run in GitHub Actions every six hours and this site displays an average of the last four runs.
All graphs show elapsed time in seconds, so lower = faster.


This test measures the time to install all packages from a valid lock file. It is performed with both a cold package cache (no packages cached) and a warm package cache (all necessary packages are cached).


This test measures the time to generate a lock file from the list of packages.


This test measures the time to update and install all dependencies in the lock file.

Add Package

This test measures the time to add a new package and regenerate the lock file.


This test measures the time to install the tool itself using the recommended method from the documentation.