Project Summaries

Summaries and links for the most relevant projects in the space of Python installation and packaging.

PyPA Projects


Mailing list 2 | Issues | Github | PyPI | Dev irc:#bandersnatch

bandersnatch is a PyPI mirroring client designed to efficiently create a complete mirror of the contents of PyPI.


Docs | Mailing list 2 | Issues | Bitbucket | PyPI

Distlib is a library which implements low-level functions that relate to packaging and distribution of Python software. It consists in part of the functions from the distutils2 project, which was intended to be released as packaging in the Python 3.3 stdlib, but was removed shortly before Python 3.3 entered beta testing.


Docs | Dev list | Issues | Github | PyPI | User irc:#pypa | Dev irc:#pypa-dev

Core utilities for Python packaging used by pip and setuptools.


Docs | User list 1 | Dev list | Issues | Github | PyPI | User irc:#pypa | Dev irc:#pypa-dev

A tool for installing Python packages.


Docs | Source | Issues | PyPI

Pipenv is a project that aims to bring the best of all packaging worlds to the Python world. It harnesses Pipfile, pip, and virtualenv into one single toolchain. It features very pretty terminal colors.



Pipfile and its sister Pipfile.lock are a higher-level application-centric alternative to pip’s lower-level requirements.txt file.

Python Packaging User Guide

Docs | Mailing list | Issues | Github | User irc:#pypa | Dev irc:#pypa-dev

This guide!


Docs | User list 2 | Dev list | Issues | GitHub | PyPI | User irc:#pypa | Dev irc:#pypa-dev

setuptools (which includes easy_install) is a collection of enhancements to the Python distutils that allow you to more easily build and distribute Python distributions, especially ones that have dependencies on other packages.

distribute was a fork of setuptools that was merged back into setuptools (in v0.7), thereby making setuptools the primary choice for Python packaging.


Mailing list 2 | Issues | Github | PyPI

Twine is a utility for interacting with PyPI, that offers a secure replacement for upload.


Docs | User list | Dev list | Issues | Github | PyPI | User irc:#pypa | Dev irc:#pypa-dev

A tool for creating isolated Python environments.


Docs | Mailing list 2 | Issues | Github | Dev irc:#pypa-dev

The current codebase powering the Python Package Index (PyPI). It is hosted at


Docs | Mailing list 2 | Issues | Github | PyPI | User irc:#pypa | Dev irc:#pypa-dev

Primarily, the wheel project offers the bdist_wheel setuptools extension for creating wheel distributions. Additionally, it offers its own command line utility for creating and installing wheels.

Non-PyPA Projects


Docs | Mailing list | Issues | Github | PyPI

Bento is a packaging tool solution for Python software, targeted as an alternative to distutils, setuptools, distribute, etc…. Bento’s philosophy is reproducibility, extensibility and simplicity (in that order).


Docs | Mailing list 2 | Issues | PyPI | GitHub | irc:#buildout

Buildout is a Python-based build system for creating, assembling and deploying applications from multiple parts, some of which may be non-Python-based. It lets you create a buildout configuration and reproduce the same software later.



conda is the package management tool for Anaconda Python installations. Anaconda Python is a distribution from Anaconda, Inc specifically aimed at the scientific community, and in particular on Windows where the installation of binary extensions is often difficult.

Conda is a completely separate tool to pip, virtualenv and wheel, but provides many of their combined features in terms of package management, virtual environment management and deployment of binary extensions.

Conda does not install packages from PyPI and can install only from the official Anaconda repositories, or (a place for user-contributed conda packages), or a local (e.g. intranet) package server. However, note that pip can be installed into, and work side-by-side with conda for managing distributions from PyPI.


Docs | Mailing List | Issues | PyPI

devpi features a powerful PyPI-compatible server and PyPI proxy cache with a complimentary command line tool to drive packaging, testing and release activities with Python.


Docs | Issues | PyPI

Flit is a simple way to put Python packages and modules on PyPI. Flit packages a single importable module or package at a time, using the import name as the name on PyPI. All subpackages and data files within a package are included automatically. Flit requires Python 3, but you can use it to distribute modules for Python 2, so long as they can be imported on Python 3.


Source | Issues | PyPI

Enscons is a Python packaging tool based on SCons. It builds pip-compatible source distributions and wheels without using distutils or setuptools, including distributions with C extensions. Enscons has a different architecture and philosophy than distutils. Rather than adding build features to a Python packaging system, enscons adds Python packaging to a general purpose build system. Enscons helps you to build sdists that can be automatically built by pip, and wheels that are independent of enscons.


Docs | Github

Hashdist is a library for building non-root software distributions. Hashdist is trying to be “the Debian of choice for cases where Debian technology doesn’t work”. The best way for Pythonistas to think about Hashdist may be a more powerful hybrid of virtualenv and buildout.


Docs | Github | PyPI

pex is both a library and tool for generating .pex (Python EXecutable) files, standalone Python environments in the spirit of virtualenv. .pex files are just carefully constructed zip files with a #!/usr/bin/env python and special, and are designed to make deployment of Python applications as simple as cp.


Docs | Github | PyPI

pipx is a tool to safely install and run Python CLI applications globally.


Docs | Mailing list | Github | PyPI

Scikit-build is an improved build system generator for CPython C/C++/Fortran/Cython extensions that integrates with setuptools, wheel and pip. It internally uses cmake (available on PyPI) to provide better support for additional compilers, build systems, cross compilation, and locating dependencies and their associated build requirements. To speed up and parallelize the build of large projects, the user can install ninja (also available on PyPI).


Docs | Github | PyPI

shiv is a command line utility for building fully self contained Python zipapps as outlined in PEP 441, but with all their dependencies included. It’s primary goal is making distributing Python applications and command line tools fast & easy.


Docs | Github | Paper | Slides

A flexible package manager designed to support multiple versions, configurations, platforms, and compilers. Spack is like homebrew, but packages are written in Python and parameterized to allow easy swapping of compilers, library versions, build options, etc. Arbitrarily many versions of packages can coexist on the same system. Spack was designed for rapidly building high performance scientific applications on clusters and supercomputers.

Spack is not in PyPI (yet), but it requires no installation and can be used immediately after cloning from github.

Standard Library Projects


Docs | Issues

A package in the Python Standard Library that provides support for bootstrapping pip into an existing Python installation or virtual environment. In most cases, end users won’t use this module, but rather it will be used during the build of the Python distribution.


Docs | User list 2 | Issues | User irc:#pypa | Dev irc:#pypa-dev

A package in the Python Standard Library that has support for creating and installing distributions. setuptools provides enhancements to distutils, and is much more commonly used than just using distutils by itself.


Docs | Issues

A package in the Python Standard Library (starting with Python 3.3) for creating Virtual Environments. For more information, see the section on Creating Virtual Environments.


pip was created by the same developer as virtualenv, and early on adopted the virtualenv mailing list, and it’s stuck ever since.


Multiple projects reuse the distutils-sig mailing list as their user list.