Packaging History




  • pipenv-based application dependency management tutorial added to PyPUG.
  • MOSS grant for PyPI awarded to PSF, team began in December to focus on replacing legacy PyPI.
  • PEP 517 accepted ( build system backends).
  • Legacy upload API switched off.



  • pip (v7) started caching built wheels, and installing from them, instead of installing directly from sdists (pip release notes).
  • pip (v7) started supporting --install-option and --global-option per requirement in requirement files (pip release notes).
  • setuptools (v18.3) now allows disabling of the manipulation of the sys.path during the processing of the easy-install.pth file.
  • PEP 470, which deprecated external, non-PyPI hosting, was accepted.
  • PEP 503 published to standardise the PyPI simple repository API.
  • PEP 508 published to standardise the specification format for individual dependencies.



  • distlib started releasing to PyPI, and pip began depending on it (pip release notes).
  • Core PyPI infrastructure relocated to OSU/OSL (with significantly increased resources)
  • The core packaging projects were collected under the Python Packaging Authority (PyPA) accounts on GitHub and Bitbucket [2]
  • Distribute merged back into setuptools, and setuptools development migrated to the PyPA BitBucket account. [1] [5]
  • PyPI started supporting clients using verified SSL with standard cert bundles.
  • PyPI forced web users over to SSL.
  • pip (v1.3) and easy_install (v0.7) use verified SSL by default (pip release notes)
  • easy_install supports additional hashes beyond md5 (pip already did)
  • Fastly CDN enabled for PyPI (donated)
  • Restructured the pip install docs to clarify that setuptools and pip are the “base” of the bootstrapping hierarchy
  • setuptools available as a cross platform wheel on PyPI
  • PEP 438 and the associated pip changes.
  • pip (v1.4) added support for building and installing wheels (pip release notes)
  • PyPA became the maintainer for the Python Packaging User Guide, which was forked from the “Hitchhiker’s Guide to Packaging”.
  • Packaging Dev and User Summits were held at Pycon 2013 to share ideas on the future of packaging. [3] [4]
  • PEP 425 and PEP 427 were accepted. Together, they specify a built-package format for Python called Wheel.

Before 2013

2012-06-19: The effort to include “Distutils2/Packaging” in Python 3.3 was abandoned due lack of involvement. [6]

2011-02-28: The PyPA is created to take over the maintenance of pip and virtualenv from Ian Bicking, led by Carl Meyer, Brian Rosner and Jannis Leidel. Other proposed names were “ianb-ng”, “cabal”, “pack” and “Ministry of Installation”.

2008: distribute was forked from setuptools by Tarek Ziade, in an effort to create a more open project.

2008: pip was introduced by Ian Bicking as an alternative to easy_install (the installer included with setuptools)

2007: virtualenv was introduced by Ian Bicking, which allowed users to create isolated Python environments based on a central system installation of Python.

2006: buildout was introduced by Jim Fulton, with the goal to create a system for repeatable installations of potentially complex projects.

2005: Package files could be hosted on PyPI for the first time, following the sprints at PyCon US 2005.

2004: setuptools was introduced by Phillip Eby, which included the Egg format, and the ability to declare and automatically install dependencies.

2003: PyPI was up and running.

2002: Richard Jones started work on PyPI, and created PEP 301 to describe it.

2001: PEP 241 was written to standardize the metadata for distributions.

2000: catalog-sig was created to discuss creating a centralized index of distributions.

2000: distutils was added to the Python standard library in Python 1.6.

1998: The distutils-sig dicussion list was created to discuss the development of distutils.