| 
									
										
										
										
											2019-05-17 11:55:34 +02:00
										 |  |  | .. highlight:: none
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. _installing-index:
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | *************************
 | 
					
						
							|  |  |  | Installing Python Modules
 | 
					
						
							|  |  |  | *************************
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | :Email: distutils-sig@python.org
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | As a popular open source development project, Python has an active
 | 
					
						
							|  |  |  | supporting community of contributors and users that also make their software
 | 
					
						
							|  |  |  | available for other Python developers to use under open source license terms.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This allows Python users to share and collaborate effectively, benefiting
 | 
					
						
							|  |  |  | from the solutions others have already created to common (and sometimes
 | 
					
						
							|  |  |  | even rare!) problems, as well as potentially contributing their own
 | 
					
						
							|  |  |  | solutions to the common pool.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This guide covers the installation part of the process. For a guide to
 | 
					
						
							|  |  |  | creating and sharing your own Python projects, refer to the
 | 
					
						
							|  |  |  | :ref:`distribution guide <distributing-index>`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. note::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    For corporate and other institutional users, be aware that many
 | 
					
						
							|  |  |  |    organisations have their own policies around using and contributing to
 | 
					
						
							|  |  |  |    open source software. Please take such policies into account when making
 | 
					
						
							|  |  |  |    use of the distribution and installation tools provided with Python.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Key terms
 | 
					
						
							|  |  |  | =========
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * ``pip`` is the preferred installer program. Starting with Python 3.4, it
 | 
					
						
							|  |  |  |   is included by default with the Python binary installers.
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | * A *virtual environment* is a semi-isolated Python environment that allows
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  |   packages to be installed for use by a particular application, rather than
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |   being installed system wide.
 | 
					
						
							|  |  |  | * ``venv`` is the standard tool for creating virtual environments, and has
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  |   been part of Python since Python 3.3. Starting with Python 3.4, it
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |   defaults to installing ``pip`` into all created virtual environments.
 | 
					
						
							| 
									
										
										
										
											2014-09-06 20:38:23 +10:00
										 |  |  | * ``virtualenv`` is a third party alternative (and predecessor) to
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |   ``venv``. It allows virtual environments to be used on versions of
 | 
					
						
							|  |  |  |   Python prior to 3.4, which either don't provide ``venv`` at all, or
 | 
					
						
							| 
									
										
										
										
											2014-09-06 20:38:23 +10:00
										 |  |  |   aren't able to automatically install ``pip`` into created environments.
 | 
					
						
							| 
									
										
										
										
											2018-05-15 20:58:35 +02:00
										 |  |  | * The `Python Packaging Index <https://pypi.org>`__ is a public
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  |   repository of open source licensed packages made available for use by
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |   other Python users.
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | * the `Python Packaging Authority
 | 
					
						
							| 
									
										
										
										
											2018-11-13 11:56:25 +08:00
										 |  |  |   <https://www.pypa.io/>`__ is the group of
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  |   developers and documentation authors responsible for the maintenance and
 | 
					
						
							|  |  |  |   evolution of the standard packaging tools and the associated metadata and
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |   file format standards. They maintain a variety of tools, documentation,
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  |   and issue trackers on both `GitHub <https://github.com/pypa>`__ and
 | 
					
						
							| 
									
										
										
										
											2019-10-23 11:17:30 +02:00
										 |  |  |   `Bitbucket <https://bitbucket.org/pypa/>`__.
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | * ``distutils`` is the original build and distribution system first added to
 | 
					
						
							|  |  |  |   the Python standard library in 1998. While direct use of ``distutils`` is
 | 
					
						
							|  |  |  |   being phased out, it still laid the foundation for the current packaging
 | 
					
						
							|  |  |  |   and distribution infrastructure, and it not only remains part of the
 | 
					
						
							|  |  |  |   standard library, but its name lives on in other ways (such as the name
 | 
					
						
							|  |  |  |   of the mailing list used to coordinate Python packaging standards
 | 
					
						
							|  |  |  |   development).
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | .. versionchanged:: 3.5
 | 
					
						
							|  |  |  |    The use of ``venv`` is now recommended for creating virtual environments.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    `Python Packaging User Guide: Creating and using virtual environments
 | 
					
						
							|  |  |  |    <https://packaging.python.org/installing/#creating-virtual-environments>`__
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | Basic usage
 | 
					
						
							|  |  |  | ===========
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The standard packaging tools are all designed to be used from the command
 | 
					
						
							| 
									
										
										
										
											2014-09-06 20:38:23 +10:00
										 |  |  | line.
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | The following command will install the latest version of a module and its
 | 
					
						
							| 
									
										
										
										
											2014-10-04 21:11:25 +10:00
										 |  |  | dependencies from the Python Packaging Index::
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 20:38:23 +10:00
										 |  |  |     python -m pip install SomePackage
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. note::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    For POSIX users (including Mac OS X and Linux users), the examples in
 | 
					
						
							|  |  |  |    this guide assume the use of a :term:`virtual environment`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    For Windows users, the examples in this guide assume that the option to
 | 
					
						
							|  |  |  |    adjust the system PATH environment variable was selected when installing
 | 
					
						
							|  |  |  |    Python.
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | It's also possible to specify an exact or minimum version directly on the
 | 
					
						
							| 
									
										
										
										
											2016-01-17 18:42:13 -08:00
										 |  |  | command line. When using comparator operators such as ``>``, ``<`` or some other
 | 
					
						
							|  |  |  | special character which get interpreted by shell, the package name and the
 | 
					
						
							|  |  |  | version should be enclosed within double quotes::
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 20:38:23 +10:00
										 |  |  |     python -m pip install SomePackage==1.0.4    # specific version
 | 
					
						
							| 
									
										
										
										
											2016-01-17 18:42:13 -08:00
										 |  |  |     python -m pip install "SomePackage>=1.0.4"  # minimum version
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | Normally, if a suitable module is already installed, attempting to install
 | 
					
						
							|  |  |  | it again will have no effect. Upgrading existing modules must be requested
 | 
					
						
							|  |  |  | explicitly::
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 20:38:23 +10:00
										 |  |  |     python -m pip install --upgrade SomePackage
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | More information and resources regarding ``pip`` and its capabilities can be
 | 
					
						
							| 
									
										
										
										
											2014-10-29 08:36:35 +01:00
										 |  |  | found in the `Python Packaging User Guide <https://packaging.python.org>`__.
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | Creation of virtual environments is done through the :mod:`venv` module.
 | 
					
						
							|  |  |  | Installing packages into an active virtual environment uses the commands shown
 | 
					
						
							|  |  |  | above.
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-04 21:11:25 +10:00
										 |  |  |     `Python Packaging User Guide: Installing Python Distribution Packages
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |     <https://packaging.python.org/installing/>`__
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | How do I ...?
 | 
					
						
							|  |  |  | =============
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | These are quick answers or links for some common tasks.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ... install ``pip`` in versions of Python prior to Python 3.4?
 | 
					
						
							|  |  |  | --------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Python only started bundling ``pip`` with Python 3.4. For earlier versions,
 | 
					
						
							|  |  |  | ``pip`` needs to be "bootstrapped" as described in the Python Packaging
 | 
					
						
							|  |  |  | User Guide.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-26 19:37:12 +01:00
										 |  |  |    `Python Packaging User Guide: Requirements for Installing Packages
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |    <https://packaging.python.org/installing/#requirements-for-installing-packages>`__
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. installing-per-user-installation:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ... install packages just for the current user?
 | 
					
						
							|  |  |  | -----------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-06 20:38:23 +10:00
										 |  |  | Passing the ``--user`` option to ``python -m pip install`` will install a
 | 
					
						
							|  |  |  | package just for the current user, rather than for all users of the system.
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ... install scientific Python packages?
 | 
					
						
							|  |  |  | ---------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A number of scientific Python packages have complex binary dependencies, and
 | 
					
						
							|  |  |  | aren't currently easy to install using ``pip`` directly. At this point in
 | 
					
						
							|  |  |  | time, it will often be easier for users to install these packages by
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | `other means <https://packaging.python.org/science/>`__
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | rather than attempting to install them with ``pip``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    `Python Packaging User Guide: Installing Scientific Packages
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |    <https://packaging.python.org/science/>`__
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ... work with multiple versions of Python installed in parallel?
 | 
					
						
							|  |  |  | ----------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | On Linux, Mac OS X, and other POSIX systems, use the versioned Python commands
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | in combination with the ``-m`` switch to run the appropriate copy of
 | 
					
						
							|  |  |  | ``pip``::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    python2   -m pip install SomePackage  # default Python 2
 | 
					
						
							|  |  |  |    python2.7 -m pip install SomePackage  # specifically Python 2.7
 | 
					
						
							|  |  |  |    python3   -m pip install SomePackage  # default Python 3
 | 
					
						
							|  |  |  |    python3.4 -m pip install SomePackage  # specifically Python 3.4
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | Appropriately versioned ``pip`` commands may also be available.
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | On Windows, use the ``py`` Python launcher in combination with the ``-m``
 | 
					
						
							|  |  |  | switch::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    py -2   -m pip install SomePackage  # default Python 2
 | 
					
						
							|  |  |  |    py -2.7 -m pip install SomePackage  # specifically Python 2.7
 | 
					
						
							|  |  |  |    py -3   -m pip install SomePackage  # default Python 3
 | 
					
						
							|  |  |  |    py -3.4 -m pip install SomePackage  # specifically Python 3.4
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. other questions:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Once the Development & Deployment part of PPUG is fleshed out, some of
 | 
					
						
							|  |  |  |    those sections should be linked from new questions here (most notably,
 | 
					
						
							|  |  |  |    we should have a question about avoiding depending on PyPI that links to
 | 
					
						
							| 
									
										
										
										
											2016-02-26 19:37:12 +01:00
										 |  |  |    https://packaging.python.org/en/latest/mirrors/)
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Common installation issues
 | 
					
						
							|  |  |  | ==========================
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Installing into the system Python on Linux
 | 
					
						
							|  |  |  | ------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | On Linux systems, a Python installation will typically be included as part
 | 
					
						
							|  |  |  | of the distribution. Installing into this Python installation requires
 | 
					
						
							|  |  |  | root access to the system, and may interfere with the operation of the
 | 
					
						
							|  |  |  | system package manager and other components of the system if a component
 | 
					
						
							|  |  |  | is unexpectedly upgraded using ``pip``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | On such systems, it is often better to use a virtual environment or a
 | 
					
						
							|  |  |  | per-user installation when installing packages with ``pip``.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-20 20:51:54 -07:00
										 |  |  | Pip not installed
 | 
					
						
							|  |  |  | -----------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It is possible that ``pip`` does not get installed by default. One potential fix is::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     python -m ensurepip --default-pip
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | There are also additional resources for `installing pip.
 | 
					
						
							|  |  |  | <https://packaging.python.org/tutorials/installing-packages/#install-pip-setuptools-and-wheel>`__
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | Installing binary extensions
 | 
					
						
							|  |  |  | ----------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Python has typically relied heavily on source based distribution, with end
 | 
					
						
							|  |  |  | users being expected to compile extension modules from source as part of
 | 
					
						
							|  |  |  | the installation process.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | With the introduction of support for the binary ``wheel`` format, and the
 | 
					
						
							|  |  |  | ability to publish wheels for at least Windows and Mac OS X through the
 | 
					
						
							| 
									
										
										
										
											2014-10-04 21:11:25 +10:00
										 |  |  | Python Packaging Index, this problem is expected to diminish over time,
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | as users are more regularly able to install pre-built extensions rather
 | 
					
						
							|  |  |  | than needing to build them themselves.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Some of the solutions for installing `scientific software
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  | <https://packaging.python.org/science/>`__
 | 
					
						
							|  |  |  | that are not yet available as pre-built ``wheel`` files may also help with
 | 
					
						
							| 
									
										
										
										
											2014-03-15 21:13:56 -07:00
										 |  |  | obtaining other binary extensions without needing to build them locally.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    `Python Packaging User Guide: Binary Extensions
 | 
					
						
							| 
									
										
										
										
											2016-07-08 10:46:21 -07:00
										 |  |  |    <https://packaging.python.org/extensions/>`__
 |