Project Summaries

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

PyPA Projects

bandersnatch

Mailing list [2] | Issues | Bitbucket | PyPI

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

distlib

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.

packaging

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

Core utilities for Python packaging used by pip and setuptools.

pip

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

A tool for installing Python packages.

Python Packaging User Guide

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

This guide!

setuptools

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.

twine

Mailing list [2] | Issues | Github | PyPI

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

virtualenv

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

A tool for creating isolated Python environments.

Warehouse

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

The new unreleased PyPI application which can be previewed at https://pypi.org/.

wheel

Docs | Mailing list [2] | Issues | Bitbucket | 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

bento

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).

buildout

Docs | Mailing list [2] | Issues | PyPI | 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

Docs

conda is the package management tool for Anaconda Python installations. Anaconda Python is a distribution from Continuum Analytics 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 Continuum repositories, or anaconda.org (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.

devpi

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.

Hashdist

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.

pex

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 __main__.py, and are designed to make deployment of Python applications as simple as cp.

Spack

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

ensurepip

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.

distutils

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.

venv

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.


[1]pip was created by the same developer as virtualenv, and early on adopted the virtualenv mailing list, and it’s stuck ever since.
[2](1, 2, 3, 4, 5, 6, 7, 8) Multiple projects reuse the distutils-sig mailing list as their user list.