Setuptools

Last updated
setuptools
Original author(s) Phillip J. Eby
Developer(s) Jason R. Coombs
Stable release
68.2.2 [1] / 12 September 2023;3 months ago (12 September 2023)
Repository
Written in Python
Operating system Cross-platform
Type Package manager
License MIT
Website setuptools.readthedocs.io OOjs UI icon edit-ltr-progressive.svg , PyPI page

setuptools is a package development process library designed to facilitate packaging Python projects by enhancing the Python standard library distutils (distribution utilities). It includes:

Contents

History

On 2004-03-17, Phillip J. Eby announced the existence of the project. [2] In 2013, Distribute, a fork of setuptools, was merged back into setuptools 0.7.

Package format

Wheel
Original author(s) Daniel Holth
Stable release
0.42.0 [3]   OOjs UI icon edit-ltr-progressive.svg / 26 November 2023
Repository github.com/pypa/wheel
Written in Python
Operating system Cross-platform
Type Package format
License MIT
Website pypi.org/project/wheel/

Python wheels have replaced eggs. [4]

Python eggs are a way of bundling additional information with a Python project, that allows the project's dependencies to be checked and satisfied at runtime, as well as allowing projects to provide plugins for other projects.

"Eggs are to Pythons as Jars are to Java..."

Package manager

Python pip has replaced EasyInstall. [5]

EasyInstall is a package manager for Python that provides a standard format for distributing Python programs and libraries (based on the Python Eggs format). EasyInstall is a module bundled with setuptools. [6] It is analogous to RubyGems for Ruby.

EasyInstall is not a fully fledged package manager. It cannot list local packages nor update them all. Pip and Python Package Manager (PyPM) are Python applications designed to fulfill a similar role as EasyInstall. The Distribute fork was created specifically due to the lack of progress in EasyInstall development. [7]

By default, EasyInstall looks in the Python Package Index (PyPI) for the desired packages and uses the metadata there to download and install the package and its dependencies.

See also

Related Research Articles

The Comprehensive Perl Archive Network (CPAN) is a repository of over 250,000 software modules and accompanying documentation for 39,000 distributions, written in the Perl programming language by over 12,000 contributors. CPAN can denote either the archive network or the Perl program that acts as an interface to the network and as an automated software installer. Most software on CPAN is free and open source software.

<span class="mw-page-title-main">Python (programming language)</span> General-purpose programming language

Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation.

<span class="mw-page-title-main">Package manager</span> Software tools for handling software packages

A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.

yum (software) Free and open-source command-line package management utility

The Yellowdog Updater Modified (YUM) is a free and open-source command-line package-management utility for computers running the Linux operating system using the RPM Package Manager. Though YUM has a command-line interface, several other tools provide graphical user interfaces to YUM functionality.

<span class="mw-page-title-main">Portage (software)</span> Gentoo package management system

Portage is a package management system originally created for and used by Gentoo Linux and also by ChromeOS, Calculate, Sabayon, and Funtoo Linux among others. Portage is based on the concept of ports collections. Gentoo is sometimes referred to as a meta-distribution due to the extreme flexibility of Portage, which makes it operating-system-independent. The Gentoo/Alt project was concerned with using Portage to manage other operating systems, such as BSDs, macOS and Solaris. The most notable of these implementations is the Gentoo/FreeBSD project.

GNU Radio is a free software development toolkit that provides signal processing blocks to implement software-defined radios and signal processing systems. It can be used with external radio frequency (RF) hardware to create software-defined radios, or without hardware in a simulation-like environment. It is widely used in hobbyist, academic, and commercial environments to support both wireless communications research and real-world radio systems.

RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries, a tool designed to easily manage the installation of gems, and a server for distributing them. It was created by Chad Fowler, Jim Weirich, David Alan Black, Paul Brannan and Richard Kilmer during RubyConf 2004.

A software repository, or repo for short, is a storage location for software packages. Often a table of contents is also stored, along with metadata. A software repository is typically managed by source or version control, or repository managers. Package managers allow automatically installing and updating repositories, sometimes called "packages".

<span class="mw-page-title-main">Pdoc</span>

Pdoc is a software package for generating API documentation for Python programming language. Built as a successor to Epydoc, Pdoc uses introspection to extract documentation from source code docstrings and allows programmers to generate HTML documentation for chosen Python modules. It is thus functionally similar to Pydoc, Perldoc and Javadoc. It supports identifier cross-linking and Markdown for its doc string format.

<span class="mw-page-title-main">Cython</span> Programming language

Cython is a superset of the programming language Python, which allows developers to write Python code that yields performance comparable to that of C.

<span class="mw-page-title-main">Python Package Index</span> Software repository

The Python Package Index, abbreviated as PyPI and also known as the Cheese Shop, is the official third-party software repository for Python. It is analogous to the CPAN repository for Perl and to the CRAN repository for R. PyPI is run by the Python Software Foundation, a charity. Some package managers, including pip, use PyPI as the default source for packages and their dependencies.

Python Package Manager (PyPM) is a Python utility intended to simplify the tasks of locating, installing, upgrading and removing Python packages. It can determine if the most recent version of a software package is installed on a system, and can install or upgrade that package from a local or remote host.

pip (package manager) Package management system for Python

pip is a package-management system written in Python and is used to install and manage software packages. The Python Software Foundation recommends using pip for installing Python applications and its dependencies during deployment. Pip connects to an online repository of public packages, called the Python Package Index. Pip can be configured to connect to other package repositories, provided that they comply to Python Enhancement Proposal 503.

LuaRocks is a package manager for the Lua programming language that provides a standard format for distributing Lua modules, a tool designed to easily manage the installation of rocks, and a server for distributing them. While not included with the Lua distribution, it has been called the "de facto package manager for community-contributed Lua modules".

Pylons Project is an open-source organization that develops a set of web application technologies written in Python. Initially the project was a single web framework called Pylons, but after the merger with the repoze.bfg framework under the new name Pyramid, the Pylons Project now consists of multiple related web application technologies.

CocoaPods is an application level dependency manager for Objective-C, Swift and any other languages that run on the Objective-C runtime, such as RubyMotion, that provides a standard format for managing external libraries. It was developed by Eloy Durán and Fabio Pelosin, who continue to manage the project with the help and contributions of many others. They began development in August 2011 and made the first public release on September 1, 2011. CocoaPods is strongly inspired by a combination of the Ruby projects RubyGems and Bundler.

<span class="mw-page-title-main">Anaconda (Python distribution)</span> Distribution of the Python and R languages for scientific computing

Anaconda is a distribution of the Python and R programming languages for scientific computing, that aims to simplify package management and deployment. The distribution includes data-science packages suitable for Windows, Linux, and macOS. It is developed and maintained by Anaconda, Inc., which was founded by Peter Wang and Travis Oliphant in 2012. As an Anaconda, Inc. product, it is also known as Anaconda Distribution or Anaconda Individual Edition, while other products from the company are Anaconda Team Edition and Anaconda Enterprise Edition, neither of which are free.

Conda is an open-source, cross-platform, language-agnostic package manager and environment management system. It was originally developed to solve difficult package management challenges faced by Python data scientists, and today is a popular package manager for Python and R. At first part of Anaconda Python distribution developed by Anaconda Inc. Later, it was spun out as a separate package, released under the BSD license. The Conda package and environment manager is included in all versions of Anaconda, Miniconda, and Anaconda Repository. Conda is a NumFOCUS affiliated project.

References

  1. "Release 68.2.2". 12 September 2023. Retrieved 19 September 2023.
  2. Eby, Phillip J. (7 March 2004). ""setuptools" package preview". Distutils-SIG. Retrieved 17 July 2021.
  3. "Release 0.42.0". 26 November 2023. Retrieved 19 December 2023.
  4. "Wheel: A built-package format for Python".
  5. jaraco: Replace easy_install with pip install. Jan 9, 2017.
  6. http://peak.telecommunity.com/DevCenter/setuptools September 1, 2009
  7. Tarek Ziade. "The strange world of packaging – forking setuptools" . Retrieved 10 October 2011.