pip (package manager)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Pip help.png
An output of pip --help
Original author(s)Ian Bicking
Initial release4 April 2011 (11 years ago) (2011-04-04)[1]
Stable release
21.1.1 / 30 April 2021 (16 months ago) (2021-04-30)[2][3]
Written inPython
Operating systemOS-independent
TypePackage management system

Package Installer for Python (pip) is the de facto and recommended[5] package-management system written in Python and is used to install and manage software packages.[6] It connects to an online repository of public packages, called the Python Package Index. pip can also be configured to connect to other package repositories (local or remote), provided that they comply to Python Enhancement Proposal 503.[7][8]

Most distributions of Python come with pip preinstalled. Python 2.7.9 and later (on the python2 series), and Python 3.4 and later include pip (pip3 for Python 3) by default.[9]


First introduced as pyinstall in 2008 by Ian Bicking (the creator of the virtualenv package) as an alternative to easy_install,[10][11] pip was chosen as the new name from one of several suggestions that the creator received on his blog post.[12] According to Bicking himself, the name is a recursive acronym for "Pip Installs Packages".[13] In 2011, the Python Packaging Authority (PyPA) was created to take over the maintenance of pip and virtualenv from Bicking, led by Carl Meyer, Brian Rosner, and Jannis Leidel.[11]

With the release of pip version 6.0 (2014-12-22), the version naming process was changed to have version in X.Y format and drop the preceding 1 from the version label.

Command-line interface[edit]

An output of pip install virtualenv

One major advantage of pip is the ease of its command-line interface, which makes installing Python software packages as easy as issuing a command:

pip install some-package-name

Users can also easily remove the package:

pip uninstall some-package-name

Most importantly, pip has a feature to manage full lists of packages and corresponding version numbers, possible through a "requirements" file.[14] This permits the efficient re-creation of an entire group of packages in a separate environment (e.g. another computer) or virtual environment. This can be achieved with a properly formatted file and the following command,[15] where requirements.txt is the name of the file:

pip install -r requirements.txt

To install some package for a specific python version, pip provides the following command, where ${version} is replaced by 2, 3, 3.4, etc.:

pip${version} install some-package-name

Using setup.py[edit]

Pip provides a way to install user-defined projects locally with the use of setup.py file. This method requires the python project to have the following file structure:

├── exampleproject/      Python package with source code.
|    ├── __init__.py     Make the folder a package.
|    └── example.py      Example module.
└── README.md            README with info of the project.

Within this structure, user can add setup.py to the root of the project (i.e. example_project for above structure) with the following content:

from setuptools import setup, find_packages

    name='example',  # Name of the package. This will be used, when the project is imported as a package.
    packages=find_packages(include=['exampleproject', 'exampleproject.*'])  # Pip will automatically install the dependences provided here.

After this, pip can install this custom project by running the following command, from the project root directory:

pip install -e .

Custom repository[edit]

Besides the default PyPI repository, Pip supports custom repositories as well.[16] Such repositories can be located on an HTTP(s) URL or on a file system location.

A custom repository can be specified using the -i or --index-url option, like so:

pip install -i https://your-custom-repo/simple <package name>

Or with a filesystem:

pip install -i /path/to/your/custom-repo/simple <package name>

See also[edit]


  1. ^ Release 1.0
  2. ^ "Changelog - pip documentation v21.1.1". pip.pypa.io. Retrieved 2 May 2021.
  3. ^ "Release history of pip on the Python Package Index (PyPI)". pypi.org. Retrieved 2 May 2021.
  4. ^ "pip/LICENSE.txt". Github. 17 April 2018. Archived from the original on 1 June 2018. Retrieved 1 June 2018.
  5. ^ "Tool recommendations". python.org. Retrieved 21 April 2022.
  6. ^ Kollár, László. "Managing Python packages the right way". Opensource.com. Red Hat. Retrieved 23 June 2019.
  7. ^ "Python Enhancement Proposal 503". python.org.
  8. ^ "pip install command line documentation". pip.pypa.io.
  9. ^ "pip installation". Retrieved 24 February 2015.
  10. ^ Bicking, Ian (24 September 2008). "pyinstall: A New Hope". Archived from the original on 27 September 2008. Retrieved 4 March 2020.
  11. ^ a b "Packaging History". Python Packaging Authority. Retrieved 4 March 2020.
  12. ^ Bicking, Ian (1 October 2008). "pyinstall pybundles". Retrieved 24 November 2021.
  13. ^ Bicking, Ian (28 October 2008). "pyinstall is dead, long live pip!". Retrieved 24 November 2021.
  14. ^ "pip documentation". The pip developers. Retrieved 5 January 2012.
  15. ^ Gahlot, Gaurav (6 November 2018). "Most Important pip Commands for a Python Developer - DZone Open Source". dzone.com. Retrieved 23 June 2019.
  16. ^ "Custom repository with pip install -i". Retrieved 12 January 2022.

External links[edit]