A python-based build system for creating, assembling and deploying applications from multiple parts, any of which may be non-python based. It lets you create a buildout configuration and reproduce the same software later.
Buildout is commonly used to install and manage Python distributions. It differentiates itself from <pip> in a few ways: Buildout takes a configuration file as input, where as pip is run from the command-line. Buildout can run any arbitrary recipe during installation and so can manage non-python parts, such as config files, databases, etc. Buildout by default installs packages in a multi-version manner, so that each distribution is contained in a separate directory, and Buildout be configured so that other Buildout installations can re-use a multi-version archive of installed distributions. In contrast, Pip installs distributions into a single location, such that it’s only possible to have a single version of each distribution installed at a time. However, it’s possible to use different recipes with Buildout to create single location installations in the same fashion as pip.
A Python distribution is a versioned compressed archive file that contains Python packages, modules, and other resource files. The distribution file is what an end-user will download from the internet and install.
A distribution is often also called a package. This is the term commonly used in other fields of computing. For example, Mac OS X and Debian call these files package files. However, in Python, the term package refers to an importable directory. In order to distinguish between these two concepts, the compressed archive file containing code is called a distribution.
However, it is not uncommon in Python to refer to a distribution using the term package. While the two meanings of the term package is not always 100% unambigous, the context of the term package is usually sufficient to distinguish the meaning of the word. For example, the python installation tool pip is an acronym for “pip installs packages”, while technically the tool installs distributions, the name package is used as it’s meaning is more widely understood. Even the site where distributions are distributed at is called the Python Package Index (and not the Python Distribution Index).
A directory containing an __init__.py file (ex. mypackage/__init__.py), and also usually containing modules (possibly along with other packages). You can import a package: import mypackage
A package should not be confused with a compressed archive file used to install Python code.
A repository of distributions with a web interface to automate distribution discovery and consumption.
The The Python Package Index (PyPI) is the default packaging index for the Python community. It is open to all Python developers to consume and distribute their distributions.
A library, framework, script, plugin, application, or collection of data or other resources, or some combination thereof.
Python projects must have unique names, which are registered on PyPI. Each project will then contain one or more releases, and each release may comprise one or more distributions.
Note that there is a strong convention to name a project after the name of the package that is imported to run that project. However, this doesn’t have to hold true. It’s possible to install a distribution from the project ‘spam’ and have it provide a package importable only as ‘eggs’.
A snapshot of a project at a particular point in time, denoted by a version identifier.
Making a release may entail the publishing of multiple distributions. For example, if version 1.0 of a project was released, it could be available in both a source distribution format and a Windows installer distribution format.
Python’s standard library is very extensive, offering a wide range of facilities as indicated by the long table of contents listed below. The library contains built-in modules (written in C) that provide access to system functionality such as file I/O that would otherwise be inaccessible to Python programmers, as well as modules written in Python that provide standardized solutions for many problems that occur in everyday programming. Some of these modules are explicitly designed to encourage and enhance the portability of Python programs by abstracting away platform-specifics into platform-neutral APIs. [StandardLibrary]
A collection of distributions available for importing. These are the distributions that are on the sys.path variable. At most one version a distribution is possible in a working set.
Working sets include all distributions available for importing, not just the sub-set of distributions which have actually been imported.