Summaries and links for the most relevant projects in the space of Python installation and packaging.
bandersnatch is a PyPI mirroring client designed to efficiently create a complete mirror of the contents of 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.
A tool for installing Python packages.
Python Packaging User Guide
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 is a utility for interacting with PyPI, that offers a secure replacement for
A tool for creating isolated Python environments.
The new unreleased PyPI application which can be previewed at https://pypi.org/.
Primarily, the wheel project offers the
bdist_wheel :ref:`setuptools` extension for
creating :term:`wheel distributions <Wheel>`. Additionally, it offers its own
command line utility for creating and installing wheels.
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 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 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 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 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 is both a library and tool for generating
.pex (Python EXecutable)
files, standalone Python environments in the spirit of :ref:`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
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
A package in the Python Standard Library that provides support for bootstrapping :ref:`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.
A package in the Python Standard Library that has support for creating and installing :term:`distributions <Distribution Package>`. :ref:`Setuptools` provides enhancements to distutils, and is much more commonly used than just using distutils by itself.
A package in the Python Standard Library (starting with Python 3.3) for creating :term:`Virtual Environments <Virtual Environment>`. For more information, see the section on :ref:`Creating and using 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.|
|||(1, 2, 3, 4, 5, 6, 7, 8) Multiple projects reuse the distutils-sig mailing list as their user list.|