The Pip Python Package Manager

Learn about Pip, a strong tool that helps you properly manage distribution packages in Python.

Before we start, let’s do a fast gloss check and verify what a ‘Python package’ extremely is. The package may be a Python module which may contain different modules or recursively, different packages. it’s the type of Python package that you just import in your Python code. However, this text isn’t regarding such packages.

This article is regarding ‘Distribution Package’, that may be a versioned archive file that contains Python modules, packages and different resource files that are accustomed to distribute a specific unleash (think of it as versioned projects). The archive file is what you as Associate in Nursing end-user transfer from the net and install – therefore, distribution packages are of major importance to the community to share and distribute theirs comes. this text aims to assist you to perceive the varied out there tools that create your life easier for victimization and maintaining the numerous Python packages that you just shall stumble upon as an information man of science and a software engineer generally.

A distribution package is additional normally noted as ‘package’ or ‘distribution’. but the context is vital, so on not confuse it with ‘import Package’ – that is additionally normally known as simply a ‘package’ or with another reasonable distribution, sort of a Linux distribution or a machine-oriented language distribution – that are usually noted with the only term ‘distribution’.

So currently that the which means of ‘package’ is set within the context of this text, let’s begin…

In this tutorial, you may see less practicable code however additional commands and thoughtful the discussion of the various flavours of technical Python jargon that’s employed in the Python community associated with package management. you may begin at ground zero and see Python installation. Then you may see what Python Package Index is. Then you may discover the varied tools that are out there for package management, starting with Distutils – wherever you may see the way to register and transfer your package.

Next, you may see Setuptools, you may additionally study straightforward Install – a package manager bundled with setup tools. you may even be introduced to some previous and currently abandoned tools like Distribute and Distutils2. Then you may see Pip. you may even be introduced to 2 concepts: Python eggs and Wheels. and eventually, you may see Conda, that may be a package and setting management system that’s enclosed in Eunectes murinus – a free and open supply distribution of the Python and R programming languages for information science and machine learning connected applications.

Be sure to ascertain out our Intro to Python for Information Science course.

Installing Python

Well, the primary step would be to truly make certain you’ve got Python put in in your system. make sure you will run Python from the statement. you’ll be able to check this and also the version of Python put in by typing:

python --version

If you get a mistake as below:

>>> python --version
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'python' is not defined

or this:

python --version
NameError                                 Traceback (most recent call last)
<ipython-input-3-a4637bbefc43> in <module>()
----> 1 python --version
NameError: name 'python' is not defined

This is as a result of the meant code was to be run in your operating system’s terminal (also known as shell or console). once you do that properly and you are doing have Python put in, you may get Associate in Nursing output like this one: Python 3.6.3. This determines that you just have Python version three.6.3 put in in your system.

If you are doing not have Python, please move and install the newest three.x version. you’ll be able to use the Hitchhiker’s Guide to Python guide to steer you through the steps.

If you’ve got Python put in however are victimization Associate in Nursing increased shell-like IPython or the Jupyter notebook, you’ll be able to preface the command with a ! to visualize the version of Python you’re operating with:

!python --version
Python 3.5.2 :: Continuum Analytics, Inc.

Python Package Index

The Python Package Index (abbreviated as PyPI) and additionally referred to as the Cheese look is that the official third-party package repository for Python. It primarily hosts Python packages within the type of archives known as ‘sdists’ (source distributions) or pre-compiled wheels (you can see this later). in a sentence: PyPI is as a large online repository of modules that are accepted by the Python community.

PyPI allows you to submit any variety of versions of your distribution to the index. If you alter the information for a specific version, you’ll be able to submit it once more and also the index is going to be updated. PyPI holds a record for every (name, version) combination submitted. As an end-user you’ll be able to hunt for packages by keywords or by filters against their information, Associate in Nursing, therefore, behaving as an index. Over 113,000 Python packages are often accessed through PyPI.

Why must you remember of PyPI? as a result of it describes distributions prepacked with ‘distutils’, furthermore as package information like distribution files if the package author desires. it’s additionally wherever ‘easy_install’ and ‘Pip’ hunt for out there packages, by default (More on this arising later).


Distutils is the normal tool for packaging in Python. it’s enclosed within the normal library (Python a pair of and Python three.0 to 3.6). Distutils exposes 2 commands for submitting package information to PyPI: the register command for submitting information to PyPI and also the transfer command for submitting distribution files.

Register your package

The distutils command register is employed to submit your distribution’s information to the index. you’ll be able to invoke it with the command:

python register

You will then be prompted to log in or register to be ready to submit your distribution package. you’ll submit any variety of versions of your distribution to the index. If you alter the information for a specific version, you’ll submit it once more and also the index is going to be updated.

Upload your package

The distutils command upload pushes the distribution files to PyPI. For additional details on the steps and distutils, inspect this page.


Setuptools may be a package development method library (or tool, a bit like Distutils) designed to facilitate packaging Python comes. it’s a group of enhancements to the Python distutils and permit you to additional simply build and distribute Python distributions, particularly ones that have dependencies on different packages.

Why do Setuptools and Disutils coexist?

It is primarily thanks to the division of responsibility written by the Python core team. They reserved the “core standards” and “minimal necessary compilation” components for themselves – developing the distutils whereas going away all the options on the far side that (extended compiler/package format/other support) to third parties. Setuptools may be a third party library and isn’t developed by the core Python team. Thus, not enclosed within the normal Python library.

Building and Distributing Packages

Check out the developer’s guide section to find out additional regarding putting in setuptools to make and distribute your packages. during this tutorial, let’s attempt to concentrate additional on tools that allow you to manage Python packages to create your life straightforward.

Easy Install

Easy Install (easy_install) may be a package manager for Python bundled with setuptools. It mechanically downloads, builds, installs and manages Python packages for you. For transfer links and installation directions for every one of the supported platforms, head over to the setuptools PyPI page.

For basic use of easy_install, you merely ought to provide the file name or computer address of supply distribution. straightforward Install accepts URLs, filenames, PyPI package names (distutils “distribution” names), and package+version specifiers. it’ll arrange to find the newest out there version that meets your criteria. once downloading or process downloaded files, straightforward Install acknowledges distutils supply distribution files with extensions of .tgz, .tar, .tar.gz, .tar.bz2, or .zip. It additionally handles already-built .egg distributions furthermore as .win32.exe installers designed victimization distutils.

By default, packages are put into the running Python installation’s site-packages directory. site-packages is by default a part of the python search path and is that the target directory of manually designed python packages. Modules put in here are often foreign simply later. you’ll be able to override this victimization the -s or --script-dir choice.

Let’s see some commands to transfer, install, upgrade or maybe delete a package victimization easy_install:

Install a package by name, looking out PyPI for the newest version. This mechanical downloads builds, and installs the package:

>>easy_install PackageName

Install or upgrade a package by name and version by finding links on a given transfer page:

>>easy_install -f URL PackageName

Upgrade Associate in Nursing already-installed package to the newest version listed on PyPI:

>>easy_install --upgrade PackageName

Else to upgrade to a selected version, you’ll be able to kind the package name followed by the desired version:

>>easy_install "PackageName==2.0"

If you’ve got upgraded a package, however wish to revert to an antecedently put in version, you’ll be able to use the command:

>>easy_install PackageName==1.3.4

To uninstall a package, initial run the command:

>>easy_install -m PackageName

This ensures that Python won’t hunt for a package you’re attending to delete. when you’ve done this, you’ll be able to safely delete the .egg files or directories, beside any scripts you want to get rid of. If you’ve got replaced a package with another version, then you’ll be able to simply delete the package(s) you don’t want by deleting the PackageName-versioninfo.egg file or directory (found within the installation directory).

Deprecated/abandoned tools


Distribute was a fork of setuptools and incorporated into setuptools zero.7. It shared identical namespace, thus if you had distribute put in, import setuptools would truly import the package distributed with Distribute. You don’t ought to use Distribute any longer. In fact, the version out there on Pypi is simply a compatibility layer that installs setuptools.


Distutils2 was an endeavor to require the simplest of Distutils, Setuptools and Distribute and become the quality tool enclosed in Python’s standard library. the thought was that Distutils2 would be distributed for previous Python versions, which Distutils2 would be renamed to packaging for Python three.3, which might embody it in its normal library. These plans failed to go as meant Associate in Nursingd presently Distutils2 is an abandoned project. the newest unleash was in March 2012, and its Pypi home page has finally been updated to mirror its death with a tl;dr: “keep victimization setuptools and pip for currently, don’t use distutils2”.


Pip is one in every of the foremost known and widely used package management system to put in and manage package packages written in Python and located in Python Package Index (PyPI). Pip may be an algorithmic signifier which will symbolize either “Pip Installs Packages” or “Pip Installs Python”. instead, pip stands for “preferred installer program”.

Python 2.7.9 and later (on the python2 series), and Python three.4 and later embody pip (pip3 for Python 3) by default. it’s a certain replacement and indirect successor to easy_install that you just saw earlier. inspect Python Packaging User Guide’s page on pip vs easy_install for a close discussion.

To ensure you’ll be able to run pip from the statement, type:

>>pip --version

If pip isn’t put in, you’ll be able to do this through the system package manager or by invoking cURL (a client-side information transfer tool):

>>curl | python

While you’re at it, it’s a decent plan to update pip, setuptools and wheel:

>>python -m pip install --upgrade pip setuptools wheel

While pip alone is adequate to put in from pre-built binary archives (the finish file(s) that are able to be dead. The output is that the machine directions that are loaded into the hardware and executed), updated copies of the setuptools and wheel comes are helpful to make sure you’ll be able to additionally install from supply archives.

Let’s inspect some handy commands to use pip:

To install the newest version of a package:

>>pip install 'PackageName'

To install a selected version, kind the package name followed by the desired version:

>>pip install 'PackageName==1.4'

To upgrade Associate in Nursing already put in package to the newest from PyPI:

>>pip install --upgrade PackageName

Uninstalling/removing a package is extremely straightforward with pip:

>>pip uninstall PackageName

Pip encompasses a feature to manage full lists of packages and corresponding version numbers through a needs file: requirements.txt. Typically, this file outlines all the pip packages that that project uses. you’ll be able to install everything therein file by using:

>>pip install -r requirements.txt

You can scan additional regarding the need files here.

Packaging formats: Egg and Wheel

There has been a considerable quantity of mentions of the 2 terms: ‘Python egg’ and ‘wheel’. they’re each packaging formats that aim to support the use case of needing Associate in Nursing install artefact that doesn’t need building or compilation. Building and compilations are often expensive in testing and production workflows.

The egg format (.egg) was introduced by setuptools in 2004. it’s a logical structure embodying the discharge of a selected version of a Python project, comprising its code, resources, and information. Basically, a .zip folder with information. They follow identical thought as .jar get in Java.

A wheel may be a ZIP-format archive with a specially formatted file name and also the .whl extension. The Wheel format was introduced by spirit 427 in 2012. Earlier, putting in a python package victimization pip or easy_install might need you to compile a bunch of underlying code, creating the import longer. Wheels offer the choice to pre-compile the code for a target design and software system. Wheels are the new normal of Python distribution and are meant to switch eggs. Support is obtainable in pip >= one.4 and setuptools >= zero.8.

You can scan the vital variations between Wheel and Egg here.


Conda is Associate in Nursing open supply package management system and setting management system. it’s maintained by time Analytics. Conda will quickly install, run and update packages and their dependencies. it’s additionally a setting manager and might simply produce, save, load and switch between environments on your native laptop.

And though Conda was created for Python programs, it will package and distribute package for several languages. The conda package and setting manager is enclosed all told versions of Eunectes murinus – a free and open supply distribution of the Python and R programming languages for information science and machine learning connected applications. to boot, Eunectes murinus still has the helpful interaction with pip that permits you to put in any further libraries that aren’t out there in conda.

Hence, it’s a decent plan to transfer and work with Eunectes murinus. This page can walk you thru Eunectes murinus installation, the complete method is pretty easy. Once you with success have Eunectes murinus put in, if you’re functioning on Windows – head to the beginning menu and hunt for, open Eunectes murinus Prompt. If you’re functioning on MacOS or Linux, open a terminal window. Then move and type:

>>conda --version

This will verify that conda is put in and running on your system and displays the version variety that you just have installed. To update conda to this version, kind the following:

>>conda update conda

Conda permits you to to make separate environments containing files, packages and their dependencies that may not move with different environments. once you begin victimization conda, you have already got a default setting named base. however don’t place programs into your base setting. Rather, produce separate environments to stay your programs isolated from one another. you’ll be able to learn additional regarding making setting and managing python and python packages in Conda here.

Packaging it all up

You have been introduced to quite a heap of terminologies and tools during this tutorial. Take a possibility and let it all sink in. this can be a general summary of all the tools there are to manage your Python packages, what you finally use depends heaps on the task at hand and also the setting you’re functioning on. In the end, there isn’t one package manager that suits everybody and you’ve got to choose your own poison.

Be sure to ascertain out informationCamp’s Intermediate Python for Data Science course, to find out additional regarding Python.

Content Protection by