Donald Stufft | 8aaff54 | 2014-11-11 10:24:11 -0500 | [diff] [blame] | 1 | :mod:`ensurepip` --- Bootstrapping the ``pip`` installer |
| 2 | ======================================================== |
| 3 | |
| 4 | .. module:: ensurepip |
| 5 | :synopsis: Bootstrapping the ``pip`` installer into an existing Python |
| 6 | installation or virtual environment. |
| 7 | |
| 8 | .. versionadded:: 2.7.9 |
| 9 | |
| 10 | The :mod:`ensurepip` package provides support for bootstrapping the ``pip`` |
| 11 | installer into an existing Python installation or virtual environment. This |
| 12 | bootstrapping approach reflects the fact that ``pip`` is an independent |
| 13 | project with its own release cycle, and the latest available stable version |
| 14 | is bundled with maintenance and feature releases of the CPython reference |
| 15 | interpreter. |
| 16 | |
| 17 | In most cases, end users of Python shouldn't need to invoke this module |
| 18 | directly (as ``pip`` should be bootstrapped by default), but it may be |
| 19 | needed if installing ``pip`` was skipped when installing Python (or |
| 20 | when creating a virtual environment) or after explicitly uninstalling ``pip``. |
| 21 | |
| 22 | .. note:: |
| 23 | |
| 24 | This module *does not* access the internet. All of the components |
| 25 | needed to bootstrap ``pip`` are included as internal parts of the |
| 26 | package. |
| 27 | |
| 28 | .. seealso:: |
| 29 | |
| 30 | :ref:`installing-index` |
| 31 | The end user guide for installing Python packages |
| 32 | |
| 33 | :pep:`453`: Explicit bootstrapping of pip in Python installations |
| 34 | The original rationale and specification for this module. |
| 35 | |
| 36 | :pep:`477`: Backport ensurepip (PEP 453) to Python 2.7 |
| 37 | The rationale and specification for backporting PEP 453 to Python 2.7. |
| 38 | |
| 39 | |
| 40 | Command line interface |
| 41 | ---------------------- |
| 42 | |
| 43 | The command line interface is invoked using the interpreter's ``-m`` switch. |
| 44 | |
| 45 | The simplest possible invocation is:: |
| 46 | |
| 47 | python -m ensurepip |
| 48 | |
| 49 | This invocation will install ``pip`` if it is not already installed, |
| 50 | but otherwise does nothing. To ensure the installed version of ``pip`` |
| 51 | is at least as recent as the one bundled with ``ensurepip``, pass the |
| 52 | ``--upgrade`` option:: |
| 53 | |
| 54 | python -m ensurepip --upgrade |
| 55 | |
| 56 | By default, ``pip`` is installed into the current virtual environment |
| 57 | (if one is active) or into the system site packages (if there is no |
| 58 | active virtual environment). The installation location can be controlled |
| 59 | through two additional command line options: |
| 60 | |
| 61 | * ``--root <dir>``: Installs ``pip`` relative to the given root directory |
| 62 | rather than the root of the currently active virtual environment (if any) |
| 63 | or the default root for the current Python installation. |
| 64 | * ``--user``: Installs ``pip`` into the user site packages directory rather |
| 65 | than globally for the current Python installation (this option is not |
| 66 | permitted inside an active virtual environment). |
| 67 | |
| 68 | By default, the scripts ``pip``, ``pipX``, and ``pipX.Y`` will be installed |
| 69 | (where X.Y stands for the version of Python used to invoke ``ensurepip``). The |
| 70 | scripts installed can be controlled through two additional command line |
| 71 | options: |
| 72 | |
| 73 | * ``--altinstall``: if an alternate installation is requested, the ``pip`` and |
| 74 | ``pipX`` script will *not* be installed. |
| 75 | |
| 76 | * ``--no-default-pip``: if a non-default installation is request, the ``pip`` |
| 77 | script will *not* be installed. |
| 78 | |
| 79 | |
| 80 | Module API |
| 81 | ---------- |
| 82 | |
| 83 | :mod:`ensurepip` exposes two functions for programmatic use: |
| 84 | |
| 85 | .. function:: version() |
| 86 | |
| 87 | Returns a string specifying the bundled version of pip that will be |
| 88 | installed when bootstrapping an environment. |
| 89 | |
| 90 | .. function:: bootstrap(root=None, upgrade=False, user=False, \ |
| 91 | altinstall=False, default_pip=True, \ |
| 92 | verbosity=0) |
| 93 | |
| 94 | Bootstraps ``pip`` into the current or designated environment. |
| 95 | |
| 96 | *root* specifies an alternative root directory to install relative to. |
| 97 | If *root* is None, then installation uses the default install location |
| 98 | for the current environment. |
| 99 | |
| 100 | *upgrade* indicates whether or not to upgrade an existing installation |
| 101 | of an earlier version of ``pip`` to the bundled version. |
| 102 | |
| 103 | *user* indicates whether to use the user scheme rather than installing |
| 104 | globally. |
| 105 | |
| 106 | By default, the scripts ``pip``, ``pipX``, and ``pipX.Y`` will be installed |
| 107 | (where X.Y stands for the current version of Python). |
| 108 | |
| 109 | If *altinstall* is set, then ``pip`` and ``pipX`` will *not* be installed. |
| 110 | |
| 111 | If *default_pip* is set to ``False``, then ``pip`` will *not* be installed. |
| 112 | |
| 113 | Setting both *altinstall* and *default_pip* will trigger |
| 114 | :exc:`ValueError`. |
| 115 | |
| 116 | *verbosity* controls the level of output to :data:`sys.stdout` from the |
| 117 | bootstrapping operation. |
| 118 | |
| 119 | .. note:: |
| 120 | |
| 121 | The bootstrapping process has side effects on both ``sys.path`` and |
| 122 | ``os.environ``. Invoking the command line interface in a subprocess |
| 123 | instead allows these side effects to be avoided. |
| 124 | |
| 125 | .. note:: |
| 126 | |
| 127 | The bootstrapping process may install additional modules required by |
| 128 | ``pip``, but other software should not assume those dependencies will |
| 129 | always be present by default (as the dependencies may be removed in a |
| 130 | future version of ``pip``). |