pip2.7(category10-web-server.html) - phpMan

PIP(1)                                pip                               PIP(1)
NAME
       pip - pip 9.0.3
       User  list  |  Dev  list  |  Github | PyPI | User IRC: #pypa | Dev IRC:
       #pypa-dev
       The PyPA recommended tool for installing Python packages.
QUICKSTART
       First, Install pip.
       Install a package from PyPI:
          $ pip install SomePackage
            [...]
            Successfully installed SomePackage
       Install a package already downloaded from PyPI or got elsewhere.   This
       is useful if the target machine does not have a network connection:
          $ pip install SomePackage-1.0-py2.py3-none-any.whl
            [...]
            Successfully installed SomePackage
       Show what files were installed:
          $ pip show --files SomePackage
            Name: SomePackage
            Version: 1.0
            Location: /my/env/lib/pythonx.x/site-packages
            Files:
             ../somepackage/__init__.py
             [...]
       List what packages are outdated:
          $ pip list --outdated
            SomePackage (Current: 1.0 Latest: 2.0)
       Upgrade a package:
          $ pip install --upgrade SomePackage
            [...]
            Found existing installation: SomePackage 1.0
            Uninstalling SomePackage:
              Successfully uninstalled SomePackage
            Running setup.py install for SomePackage
            Successfully installed SomePackage
       Uninstall a package:
          $ pip uninstall SomePackage
            Uninstalling SomePackage:
              /my/env/lib/pythonx.x/site-packages/somepackage
            Proceed (y/n)? y
            Successfully uninstalled SomePackage
INSTALLATION
   Do I need to install pip?
       pip  is  already installed if you're using Python 2 >=2.7.9 or Python 3
       >=3.4 binaries downloaded from python.org, but you'll need  to  upgrade
       pip.
       Additionally,  pip  will  already  be  installed if you're working in a
       Virtual Environment created by virtualenv or pyvenv.
   Installing with get-pip.py
       To install pip, securely download get-pip.py. [2]
       Then run the following:
          python get-pip.py
       WARNING:
          Be cautious if you're using a Python install that's managed by  your
          operating  system  or  another  package manager. get-pip.py does not
          coordinate with those tools, and may leave your system in an  incon-
          sistent state.
       get-pip.py  will  also install setuptools [3] and wheel, if they're not
       already. setuptools is required to install source distributions.   Both
       are  required to be able to build a Wheel cache (which improves instal-
       lation speed), although  neither  are  required  to  install  pre-built
       wheels.
       NOTE:
          The  get-pip.py  script  is  supported on the same python version as
          pip.  For the now unsupported Python 3.2,  an  alternate  script  is
          available here.
   get-pip.py options
       --no-setuptools
              If set, don't attempt to install setuptools
       --no-wheel
              If set, don't attempt to install wheel
       Additionally, get-pip.py supports using the pip install options and the
       general options. Below are some examples:
       Install from local copies of pip and setuptools:
          python get-pip.py --no-index --find-links=/local/copies
       Install to the user site [4]:
          python get-pip.py --user
       Install behind a proxy:
          python get-pip.py --proxy="[user:passwd@]proxy.server:port"
   Using Linux Package Managers
       See Installing pip/setuptools/wheel with Linux Package Managers in  the
       Python Packaging User Guide.
   Upgrading pip
       On Linux or macOS:
          pip install -U pip
       On Windows [5]:
          python -m pip install -U pip
   Python and OS Compatibility
       pip works with CPython versions 2.6, 2.7, 3.3, 3.4, 3.5 and also pypy.
       This means pip works on the latest patch version of each of these minor
       versions (i.e. 2.6.9 for 2.6, etc).  Previous patch versions  are  sup-
       ported on a best effort approach.
       pip works on Unix/Linux, macOS, and Windows.
                                        ----
       [1]  For  Python  2,  see https://docs.python.org/2/installing, and for
            Python3, see https://docs.python.org/3/installing.
       [2]  "Secure" in this context means using a modern browser  or  a  tool
            like  curl  that  verifies  SSL certificates when downloading from
            https URLs.
       [3]  Beginning with pip v1.5.1, get-pip.py stopped requiring setuptools
            to be installed first.
       [4]  The  pip  developers are considering making --user the default for
            all installs, including get-pip.py installs of pip,  but  at  this
            time,  --user installs for pip itself, should not be considered to
            be fully tested or endorsed. For discussion, see Issue 1668.
       [5]  https://github.com/pypa/pip/issues/1299
USER GUIDE
   Contents
       o User Guide
         o Installing Packages
         o Requirements Files
         o Constraints Files
         o Installing from Wheels
         o Uninstalling Packages
         o Listing Packages
         o Searching for Packages
         o Configuration
           o Config file
           o Environment Variables
           o Config Precedence
           o Command Completion
         o Installing from local packages
         o "Only if needed" Recursive Upgrade
         o User Installs
         o Ensuring Repeatability
           o Pinned Version Numbers
           o Hash-checking Mode
           o Installation Bundles
   Installing Packages
       pip supports installing from PyPI, version control, local projects, and
       directly from distribution files.
       The  most  common  scenario  is  to install from PyPI using Requirement
       Specifiers
              $ pip install SomePackage            # latest version
              $ pip install SomePackage==1.0.4     # specific version
              $ pip install 'SomePackage>=1.0.4'     # minimum version
       For more information and examples, see the pip install reference.
   Requirements Files
       "Requirements files" are  files  containing  a  list  of  items  to  be
       installed using pip install like so:
              pip install -r requirements.txt
       Details on the format of the files are here: Requirements File Format.
       Logically,  a Requirements file is just a list of pip install arguments
       placed in a file. Note that you should not rely on  the  items  in  the
       file being installed by pip in any particular order.
       In practice, there are 4 common uses of Requirements files:
       1. Requirements  files  are used to hold the result from pip freeze for
          the purpose of achieving repeatable installations.   In  this  case,
          your  requirement  file contains a pinned version of everything that
          was installed when pip freeze was run.
             pip freeze > requirements.txt
             pip install -r requirements.txt
       2. Requirements files are used to force pip to properly resolve  depen-
          dencies.  As it is now, pip doesn't have true dependency resolution,
          but instead simply uses the  first  specification  it  finds  for  a
          project.   E.g   if   pkg1  requires  pkg3>=1.0  and  pkg2  requires
          pkg3>=1.0,<=2.0, and if pkg1 is resolved first, pip  will  only  use
          pkg3>=1.0, and could easily end up installing a version of pkg3 that
          conflicts with the needs of pkg2.  To solve this  problem,  you  can
          place  pkg3>=1.0,<=2.0  (i.e.  the  correct specification) into your
          requirements file directly along with the other top  level  require-
          ments. Like so:
             pkg1
             pkg2
             pkg3>=1.0,<=2.0
       3. Requirements  files  are  used  to force pip to install an alternate
          version of a sub-dependency.  For example, suppose ProjectA in  your
          requirements  file  requires ProjectB, but the latest version (v1.3)
          has a bug, you can force pip to accept earlier versions like so:
             ProjectA
             ProjectB<1.3
       4. Requirements files are used to override a dependency  with  a  local
          patch  that lives in version control.  For example, suppose a depen-
          dency, SomeDependency from PyPI has a bug, and you can't wait for an
          upstream fix.  You could clone/copy the src, make the fix, and place
          it in VCS with the tag sometag.  You'd reference it in your require-
          ments file with a line like so:
             git+https://myvcs.com/some_dependency@sometag#egg=SomeDependency
          If  SomeDependency  was  previously  a top-level requirement in your
          requirements file, then replace that line  with  the  new  line.  If
          SomeDependency is a sub-dependency, then add the new line.
       It's  important  to  be  clear that pip determines package dependencies
       using install_requires metadata, not  by  discovering  requirements.txt
       files embedded in projects.
       See also:
       o Requirements File Format
       o pip freeze
       o "setup.py vs requirements.txt" (an article by Donald Stufft)
   Constraints Files
       Constraints  files  are requirements files that only control which ver-
       sion of a requirement is installed, not whether it is installed or not.
       Their  syntax  and  contents is nearly identical to Requirements Files.
       There is one key difference: Including a package in a constraints  file
       does not trigger installation of the package.
       Use a constraints file like so:
              pip install -c constraints.txt
       Constraints  files are used for exactly the same reason as requirements
       files when you don't know exactly what things you want to install.  For
       instance,  say that the "helloworld" package doesn't work in your envi-
       ronment, so you have a local patched version. Some things  you  install
       depend on "helloworld", and some don't.
       One  way  to ensure that the patched version is used consistently is to
       manually audit the dependencies of everything you install, and if "hel-
       loworld"  is  present, write a requirements file to use when installing
       that thing.
       Constraints files offer a better way: write a single  constraints  file
       for  your  organisation  and  use  that  everywhere. If the thing being
       installed requires "helloworld" to be  installed,  your  fixed  version
       specified in your constraints file will be used.
       Constraints file support was added in pip 7.1.
   Installing from Wheels
       "Wheel"  is a built, archive format that can greatly speed installation
       compared to building and installing  from  source  archives.  For  more
       information, see the Wheel docs , PEP427, and PEP425
       Pip  prefers  Wheels where they are available. To disable this, use the
       --no-binary flag for pip install.
       If no satisfactory wheels are found, pip will default to finding source
       archives.
       To install directly from a wheel archive:
          pip install SomePackage-1.0-py2.py3-none-any.whl
       For the cases where wheels are not available, pip offers pip wheel as a
       convenience, to build wheels for all your  requirements  and  dependen-
       cies.
       pip  wheel  requires  the wheel package to be installed, which provides
       the "bdist_wheel" setuptools extension that it uses.
       To build wheels for your requirements and all their dependencies  to  a
       local directory:
          pip install wheel
          pip wheel --wheel-dir=/local/wheels -r requirements.txt
       And  then to install those requirements just using your local directory
       of wheels (and not from PyPI):
          pip install --no-index --find-links=/local/wheels -r requirements.txt
   Uninstalling Packages
       pip is able to uninstall most packages like so:
          $ pip uninstall SomePackage
       pip also performs an automatic uninstall of an old version of a package
       before upgrading to a newer version.
       For more information and examples, see the pip uninstall reference.
   Listing Packages
       To list installed packages:
          $ pip list
          docutils (0.9.1)
          Jinja2 (2.6)
          Pygments (1.5)
          Sphinx (1.1.2)
       To list outdated packages, and show the latest version available:
          $ pip list --outdated
          docutils (Current: 0.9.1 Latest: 0.10)
          Sphinx (Current: 1.1.2 Latest: 1.1.3)
       To show details about an installed package:
          $ pip show sphinx
          ---
          Name: Sphinx
          Version: 1.1.3
          Location: /my/env/lib/pythonx.x/site-packages
          Requires: Pygments, Jinja2, docutils
       For more information and examples, see the pip list and pip show refer-
       ence pages.
   Searching for Packages
       pip can search PyPI for packages using the pip search command:
          $ pip search "query"
       The query will be used to search the names and summaries of  all  pack-
       ages.
       For more information and examples, see the pip search reference.
   Configuration
   Config file
       pip  allows  you  to set all command line option defaults in a standard
       ini style config file.
       The names and locations of the configuration files vary slightly across
       platforms.  You  may have per-user, per-virtualenv or site-wide (shared
       amongst all users) configuration:
       Per-user:
       o On Unix the default configuration file is: $HOME/.config/pip/pip.conf
         which respects the XDG_CONFIG_HOME environment variable.
       o On  macOS  the  configuration  file is $HOME/Library/Application Sup-
         port/pip/pip.conf.
       o On Windows the configuration file is %APPDATA%\pip\pip.ini.
       There are also a legacy  per-user  configuration  file  which  is  also
       respected, these are located at:
       o On Unix and macOS the configuration file is: $HOME/.pip/pip.conf
       o On Windows the configuration file is: %HOME%\pip\pip.ini
       You can set a custom path location for this config file using the envi-
       ronment variable PIP_CONFIG_FILE.
       Inside a virtualenv:
       o On Unix and macOS the file is $VIRTUAL_ENV/pip.conf
       o On Windows the file is: %VIRTUAL_ENV%\pip.ini
       Site-wide:
       o On Unix the file may be located in  /etc/pip.conf.  Alternatively  it
         may  be  in a "pip" subdirectory of any of the paths set in the envi-
         ronment  variable  XDG_CONFIG_DIRS  (if  it  exists),   for   example
         /etc/xdg/pip/pip.conf.
       o On macOS the file is: /Library/Application Support/pip/pip.conf
       o On Windows XP the file is: C:\Documents and Settings\All Users\Appli-
         cation Data\pip\pip.ini
       o On Windows 7 and later the file is hidden, but writeable  at  C:\Pro-
         gramData\pip\pip.ini
       o Site-wide configuration is not supported on Windows Vista
       If multiple configuration files are found by pip then they are combined
       in the following order:
       1. Firstly the site-wide file is read, then
       2. The per-user file is read, and finally
       3. The virtualenv-specific file is read.
       Each file read overrides any values read from previous files, so if the
       global timeout is specified in both the site-wide file and the per-user
       file then the latter value is the one that will be used.
       The names of the settings  are  derived  from  the  long  command  line
       option,   e.g.    if   you  want  to  use  a  different  package  index
       (--index-url) and set the HTTP timeout (--default-timeout) to  60  sec-
       onds your config file would look like this:
          [global]
          timeout = 60
          index-url = http://download.zope.org/ppix
       Each subcommand can be configured optionally in its own section so that
       every global setting with  the  same  name  will  be  overridden;  e.g.
       decreasing  the timeout to 10 seconds when running the freeze (Freezing
       Requirements) command and using 60 seconds for all  other  commands  is
       possible with:
          [global]
          timeout = 60
          [freeze]
          timeout = 10
       Boolean options like --ignore-installed or --no-dependencies can be set
       like this:
          [install]
          ignore-installed = true
          no-dependencies = yes
       To enable the boolean options --no-compile  and  --no-cache-dir,  falsy
       values have to be used:
          [global]
          no-cache-dir = false
          [install]
          no-compile = no
       Appending options like --find-links can be written on multiple lines:
          [global]
          find-links =
              http://download.example.com
          [install]
          find-links =
              http://mirror1.example.com
              http://mirror2.example.com
   Environment Variables
       pip's  command line options can be set with environment variables using
       the format PIP_<UPPER_LONG_NAME> . Dashes (-) have to be replaced  with
       underscores (_).
       For example, to set the default timeout:
          export PIP_DEFAULT_TIMEOUT=60
       This is the same as passing the option to pip directly:
          pip --default-timeout=60 [...]
       To set options that can be set multiple times on the command line, just
       add spaces in between values. For example:
          export PIP_FIND_LINKS="http://mirror1.example.com http://mirror2.example.com"
       is the same as calling:
          pip install --find-links=http://mirror1.example.com --find-links=http://mirror2.example.com
   Config Precedence
       Command line options have precedence over environment variables,  which
       have precedence over the config file.
       Within  the config file, command specific sections have precedence over
       the global section.
       Examples:
       o --host=foo overrides PIP_HOST=foo
       o PIP_HOST=foo overrides a config file with [global] host = foo
       o A command specific section in the config file [<command>] host =  bar
         overrides  the option with same name in the [global] config file sec-
         tion
   Command Completion
       pip comes with support for command line completion  in  bash,  zsh  and
       fish.
       To setup for bash:
          $ pip completion --bash >> ~/.profile
       To setup for zsh:
          $ pip completion --zsh >> ~/.zprofile
       To setup for fish:
          $ pip completion --fish > ~/.config/fish/completions/pip.fish
       Alternatively,  you  can  use  the  result  of  the  completion command
       directly with the eval function of your shell, e.g. by adding the  fol-
       lowing to your startup file:
          eval "`pip completion --bash`"
   Installing from local packages
       In  some  cases, you may want to install from local packages only, with
       no traffic to PyPI.
       First, download the archives that fulfill your requirements:
          $ pip install --download DIR -r requirements.txt
       Note that pip install --download will look in your wheel  cache  first,
       before  trying  to  download from PyPI.  If you've never installed your
       requirements before, you won't have a wheel cache for those items.   In
       that case, if some of your requirements don't come as wheels from PyPI,
       and you want wheels, then run this instead:
          $ pip wheel --wheel-dir DIR -r requirements.txt
       Then, to install from local only,  you'll  be  using  --find-links  and
       --no-index like so:
          $ pip install --no-index --find-links=DIR -r requirements.txt
   Only if needed Recursive Upgrade
       pip  install  --upgrade is currently written to perform an eager recur-
       sive upgrade, i.e. it upgrades all dependencies regardless  of  whether
       they still satisfy the new parent requirements.
       E.g. supposing:
       o SomePackage-1.0 requires AnotherPackage>=1.0
       o SomePackage-2.0 requires AnotherPackage>=1.0 and OneMorePackage==1.0
       o SomePackage-1.0 and AnotherPackage-1.0 are currently installed
       o SomePackage-2.0 and AnotherPackage-2.0 are the latest versions avail-
         able on PyPI.
       Running pip install --upgrade SomePackage would upgrade SomePackage and
       AnotherPackage despite AnotherPackage already being satisfied.
       pip  doesn't  currently have an option to do an "only if needed" recur-
       sive upgrade, but you can achieve it using these 2 steps:
          pip install --upgrade --no-deps SomePackage
          pip install SomePackage
       The first line will upgrade  SomePackage,  but  not  dependencies  like
       AnotherPackage.   The  2nd  line  will  fill  in  new dependencies like
       OneMorePackage.
       See #59 for a plan of making "only if  needed"  recursive  the  default
       behavior for a new pip upgrade command.
   User Installs
       With  Python  2.6  came the "user scheme" for installation, which means
       that all Python distributions support an alternative  install  location
       that  is  specific  to  a  user.   The  default location for each OS is
       explained in the python documentation for the site.USER_BASE  variable.
       This  mode  of  installation  can be turned on by specifying the --user
       option to pip install.
       Moreover,  the  "user  scheme"  can  be  customized  by   setting   the
       PYTHONUSERBASE   environment  variable,  which  updates  the  value  of
       site.USER_BASE.
       To install "SomePackage" into an environment with  site.USER_BASE  cus-
       tomized to '/myappenv', do the following:
          export PYTHONUSERBASE=/myappenv
          pip install --user SomePackage
       pip install --user follows four rules:
       1. When  globally  installed  packages are on the python path, and they
          conflict with the installation requirements, they are  ignored,  and
          not uninstalled.
       2. When  globally  installed  packages are on the python path, and they
          satisfy the installation requirements, pip does nothing, and reports
          that  requirement  is  satisfied (similar to how global packages can
          satisfy  requirements  when  installing   packages   in   a   --sys-
          tem-site-packages virtualenv).
       3. pip  will  not perform a --user install in a --no-site-packages vir-
          tualenv (i.e. the default kind of virtualenv), due to the user  site
          not being on the python path.  The installation would be pointless.
       4. In a --system-site-packages virtualenv, pip will not install a pack-
          age that conflicts with a package in the  virtualenv  site-packages.
          The --user installation would lack sys.path precedence and be point-
          less.
       To make the rules clearer, here are some examples:
       From within a --no-site-packages virtualenv (i.e. the default kind):
          $ pip install --user SomePackage
          Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
       From within a --system-site-packages virtualenv where  SomePackage==0.3
       is already installed in the virtualenv:
          $ pip install --user SomePackage==0.4
          Will not install to the user site because it will lack sys.path precedence
       From within a real python, where SomePackage is not installed globally:
          $ pip install --user SomePackage
          [...]
          Successfully installed SomePackage
       From within a real python, where SomePackage is installed globally, but
       is not the latest version:
          $ pip install --user SomePackage
          [...]
          Requirement already satisfied (use --upgrade to upgrade)
          $ pip install --user --upgrade SomePackage
          [...]
          Successfully installed SomePackage
       From within a real python, where SomePackage is installed globally, and
       is the latest version:
          $ pip install --user SomePackage
          [...]
          Requirement already satisfied (use --upgrade to upgrade)
          $ pip install --user --upgrade SomePackage
          [...]
          Requirement already up-to-date: SomePackage
          # force the install
          $ pip install --user --ignore-installed SomePackage
          [...]
          Successfully installed SomePackage
   Ensuring Repeatability
       pip can achieve various levels of repeatability:
   Pinned Version Numbers
       Pinning the versions of your dependencies in the requirements file pro-
       tects you from bugs or incompatibilities in newly released versions:
          SomePackage == 1.2.3
          DependencyOfSomePackage == 4.5.6
       Using pip freeze to generate the requirements file will ensure that not
       only the top-level dependencies are included but their sub-dependencies
       as well, and so on. Perform the installation  using  --no-deps  for  an
       extra  dose  of  insurance  against  installing anything not explicitly
       listed.
       This strategy is easy to implement and works across OSes and  architec-
       tures.  However, it trusts PyPI and the certificate authority chain. It
       also relies on indices and find-links locations not  allowing  packages
       to change without a version increase. (PyPI does protect against this.)
   Hash-checking Mode
       Beyond  pinning  version  numbers,  you can add hashes against which to
       verify downloaded packages:
          FooProject == 1.2 --hash=sha256:2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
       This protects against a compromise of PyPI  or  the  HTTPS  certificate
       chain.  It  also  guards against a package changing without its version
       number changing (on indexes that allow this).  This approach is a  good
       fit for automated server deployments.
       Hash-checking  mode  is a labor-saving alternative to running a private
       index server containing approved  packages:  it  removes  the  need  to
       upload  packages,  maintain  ACLs, and keep an audit trail (which a VCS
       gives you on the requirements file for free). It  can  also  substitute
       for  a vendor library, providing easier upgrades and less VCS noise. It
       does not, of course, provide the availability  benefits  of  a  private
       index or a vendor library.
       For more, see pip install's discussion of hash-checking mode.
   Installation Bundles
       Using  pip  wheel,  you  can bundle up all of a project's dependencies,
       with any compilation done, into a single archive. This allows installa-
       tion  when  index  servers  are  unavailable  and avoids time-consuming
       recompilation. Create an archive like this:
          $ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
          $ pip wheel -r requirements.txt --wheel-dir=$tempdir
          $ cwd=`pwd`
          $ (cd "$tempdir"; tar -cjvf "$cwd/bundled.tar.bz2" *)
       You can then install from the archive like this:
          $ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
          $ (cd $tempdir; tar -xvf /path/to/bundled.tar.bz2)
          $ pip install --force-reinstall --ignore-installed --upgrade --no-index --no-deps $tempdir/*
       Note that compiled packages are  typically  OS-  and  architecture-spe-
       cific, so these archives are not necessarily portable across machines.
       Hash-checking  mode  can  be used along with this method to ensure that
       future archives are built with identical packages.
       WARNING:
          Finally, beware of the setup_requires keyword arg in setup.py.   The
          (rare)  packages  that  use  it  will cause those dependencies to be
          downloaded by setuptools directly, skipping  pip's  protections.  If
          you need to use such a package, see Controlling setup_requires.
REFERENCE GUIDE
   pip
   Contents
       o pip
         o Usage
         o Description
           o Logging
             o Console logging
             o File logging
           o --exists-action option
           o Build System Interface
             o Setuptools Injection
             o Future Developments
             o Build Options
         o General Options
   Usage
          pip <command> [options]
   Description
   Logging
   Console logging
       pip  offers  -v,  --verbose  and -q, --quiet to control the console log
       level.
   File logging
       pip offers the --log option for specifying a file where a maximum  ver-
       bosity  log  will  be  kept.  This option is empty by default. This log
       appends to previous logging.
       Like all pip options, --log can also be set as an environment variable,
       or placed into the pip config file.  See the Configuration section.
   --exists-action option
       This  option specifies default behavior when path already exists.  Pos-
       sible cases: downloading files or checking out repositories for instal-
       lation,  creating archives. If --exists-action is not defined, pip will
       prompt when decision is needed.
       (s)witch
              Only relevant to VCS checkout. Attempt to switch the checkout to
              the appropriate url and/or revision.
       (i)gnore
              Abort  current operation (e.g. don't copy file, don't create ar-
              chive, don't modify a checkout).
       (w)ipe Delete the file or VCS checkout before trying to  create,  down-
              load, or checkout a new one.
       (b)ackup
              Rename  the  file  or checkout to {name}{'.bak' * n}, where n is
              some number of .bak extensions, such that the file didn't  exist
              at  some  point.  So the most recent backup will be the one with
              the largest number after .bak.
       (a)abort
              Abort pip and return non-zero exit status.
   Build System Interface
       Pip builds packages by invoking the build system. Presently,  the  only
       supported  build  system  is setuptools, but future developments to the
       Python packaging infrastructure are expected  to  include  support  for
       other  build systems.  As well as package building, the build system is
       also invoked to install packages direct from source.
       The interface to the build system is  via  the  setup.py  command  line
       script  -  all  build actions are defined in terms of the specific set-
       up.py command line that will be run to invoke the required action.
   Setuptools Injection
       As noted above, the supported build system is setuptools. However,  not
       all packages use setuptools in their build scripts. To support projects
       that use "pure distutils",  pip  injects  setuptools  into  sys.modules
       before invoking setup.py. The injection should be transparent to distu-
       tils-based projects, but 3rd party build tools  wishing  to  provide  a
       setup.py  emulating the commands pip requires may need to be aware that
       it takes place.
   Future Developments
       PEP426 notes that the intention is to add hooks to project metadata  in
       version  2.1  of the metadata spec, to explicitly define how to build a
       project from its source. Once this version  of  the  metadata  spec  is
       final,  pip  will  migrate  to using that interface. At that point, the
       setup.py interface documented here will be retained solely  for  legacy
       purposes, until projects have migrated.
       Specifically, applications should not expect to rely on there being any
       form of backward compatibility guarantees around  the  setup.py  inter-
       face.
   Build Options
       The --global-option and --build-option arguments to the pip install and
       pip  wheel  inject  additional  arguments  into  the  setup.py  command
       (--build-option  is  only available in pip wheel).  These arguments are
       included in the command as follows:
          python setup.py <global_options> BUILD COMMAND <build_options>
       The options are passed unmodified, and presently offer direct access to
       the  distutils  command line. Use of --global-option and --build-option
       should be considered as build system dependent, and  may  not  be  sup-
       ported  in the current form if support for alternative build systems is
       added to pip.
   General Options
       -h, --help
              Show help.
       --isolated
              Run pip in an isolated mode, ignoring environment variables  and
              user configuration.
       -v, --verbose
              Give  more  output.  Option is additive, and can be used up to 3
              times.
       -V, --version
              Show version and exit.
       -q, --quiet
              Give less output. Option is additive, and can be used  up  to  3
              times  (corresponding  to  WARNING,  ERROR, and CRITICAL logging
              levels).
       --log <path>
              Path to a verbose appending log.
       --proxy <proxy>
              Specify a proxy in the form [user:passwd@]proxy.server:port.
       --retries <retries>
              Maximum  number  of  retries  each  connection  should   attempt
              (default 5 times).
       --timeout <sec>
              Set the socket timeout (default 15 seconds).
       --exists-action <action>
              Default  action  when a path already exists: (s)witch, (i)gnore,
              (w)ipe, (b)ackup, (a)bort.
       --trusted-host <hostname>
              Mark this host as trusted, even though it does not have valid or
              any HTTPS.
       --cert <path>
              Path to alternate CA bundle.
       --client-cert <path>
              Path  to  SSL  client  certificate, a single file containing the
              private key and the certificate in PEM format.
       --cache-dir <dir>
              Store the cache data in <dir>.
       --no-cache-dir
              Disable the cache.
       --disable-pip-version-check
              Don't periodically check PyPI to determine whether a new version
              of pip is available for download. Implied with --no-index.
   pip install
   Contents
       o pip install
         o Usage
         o Description
           o Overview
           o Argument Handling
           o Working Out the Name and Version
           o Satisfying Requirements
           o Installation Order
           o Requirements File Format
             o Example Requirements File
           o Requirement Specifiers
           o Per-requirement Overrides
           o Pre-release Versions
           o VCS Support
             o Git
             o Mercurial
             o Subversion
             o Bazaar
           o Finding Packages
           o SSL Certificate Verification
           o Caching
             o Wheel Cache
           o Hash-Checking Mode
             o Hashes from PyPI
           o "Editable" Installs
           o Controlling setup_requires
           o Build System Interface
         o Options
         o Examples
   Usage
          pip install [options] <requirement specifier> [package-index-options] ...
          pip install [options] -r <requirements file> [package-index-options] ...
          pip install [options] [-e] <vcs project url> ...
          pip install [options] [-e] <local project path> ...
          pip install [options] <archive url/path> ...
   Description
       Install packages from:
       o PyPI (and other indexes) using requirement specifiers.
       o VCS project urls.
       o Local project directories.
       o Local or remote source archives.
       pip  also  supports installing from "requirements files", which provide
       an easy way to specify a whole environment to be installed.
   Overview
       Pip install has several stages:
       1. Identify the base requirements. The user supplied arguments are pro-
          cessed here.
       2. Resolve dependencies. What will be installed is determined here.
       3. Build  wheels.  All  the  dependencies  that  can  be are built into
          wheels.
       4. Install    the    packages    (and    uninstall    anything    being
          upgraded/replaced).
   Argument Handling
       When looking at the items to be installed, pip checks what type of item
       each is, in the following order:
       1. Project or archive URL.
       2. Local directory (which must contain a setup.py, or pip  will  report
          an error).
       3. Local  file  (a  sdist or wheel format archive, following the naming
          conventions for those formats).
       4. A requirement, as specified in PEP 440.
       Each item identified is added to the set of requirements to  be  satis-
       fied by the install.
   Working Out the Name and Version
       For  each  candidate  item, pip needs to know the project name and ver-
       sion. For wheels (identified by the .whl file extension)  this  can  be
       obtained  from  the filename, as per the Wheel spec. For local directo-
       ries, or explicitly specified sdist files, the setup.py  egg_info  com-
       mand  is used to determine the project metadata. For sdists located via
       an index, the filename is parsed for the name and project version (this
       is  in  theory  slightly less reliable than using the egg_info command,
       but avoids downloading and processing unnecessary numbers of files).
       Any URL may use the #egg=name syntax (see VCS  Support)  to  explicitly
       state the project name.
   Satisfying Requirements
       Once  pip has the set of requirements to satisfy, it chooses which ver-
       sion of each requirement to install using the simple rule that the lat-
       est version that satisfies the given constraints will be installed (but
       see here for an exception regarding pre-release versions).  Where  more
       than  one source of the chosen version is available, it is assumed that
       any source is acceptable (as otherwise the versions would differ).
   Installation Order
       As of v6.1.0, pip installs dependencies before their  dependents,  i.e.
       in  "topological  order".   This  is  the only commitment pip currently
       makes related to order.  While it may be coincidentally true  that  pip
       will  install  things  in  the order of the install arguments or in the
       order of the items in a requirements file, this is not a promise.
       In the event of a dependency cycle  (aka  "circular  dependency"),  the
       current  implementation (which might possibly change later) has it such
       that the first encountered member of the cycle is installed last.
       For instance, if quux depends on foo which depends on bar which depends
       on baz, which depends on foo:
          pip install quux
          ...
          Installing collected packages baz, bar, foo, quux
          pip install bar
          ...
          Installing collected packages foo, baz, bar
       Prior to v6.1.0, pip made no commitments about install order.
       The  decision  to  install topologically is based on the principle that
       installations should proceed in  a  way  that  leaves  the  environment
       usable at each step. This has two main practical benefits:
       1. Concurrent  use of the environment during the install is more likely
          to work.
       2. A failed install is less  likely  to  leave  a  broken  environment.
          Although  pip would like to support failure rollbacks eventually, in
          the mean time, this is an improvement.
       Although the new install order is not intended to replace (and does not
       replace)  the  use  of setup_requires to declare build dependencies, it
       may help certain projects install from  sdist  (that  might  previously
       fail) that fit the following profile:
       1. They  have  build  dependencies  that  are  also declared as install
          dependencies using install_requires.
       2. python setup.py egg_info  works  without  their  build  dependencies
          being installed.
       3. For  whatever reason, they don't or won't declare their build depen-
          dencies using setup_requires.
   Requirements File Format
       Each line of the requirements file indicates something to be installed,
       and like arguments to pip install, the following forms are supported:
          [[--option]...]
          <requirement specifier> [; markers] [[--option]...]
          <archive url/path>
          [-e] <local project path>
          [-e] <vcs project url>
       For details on requirement specifiers, see Requirement Specifiers.
       See the pip install Examples for examples of all these forms.
       A  line  that begins with # is treated as a comment and ignored. White-
       space followed by a # causes the # and the remainder of the line to  be
       treated as a comment.
       A  line  ending in an unescaped \ is treated as a line continuation and
       the newline following it is effectively ignored.
       Comments are stripped before line continuations are processed.
       The following options are supported:
          o -i, --index-url
          o --extra-index-url
          o --no-index
          o -f, --find-links
          o --no-binary
          o --only-binary
          o --require-hashes
       For example, to specify --no-index and 2 --find-links locations:
          --no-index
          --find-links /my/local/archives
          --find-links http://some.archives.com/archives
       If you wish, you can refer to other requirements files, like this:
          -r more_requirements.txt
       You can also refer to constraints files, like this:
          -c some_constraints.txt
   Example Requirements File
       Use pip install -r example-requirements.txt to install:
          #
          ####### example-requirements.txt #######
          #
          ###### Requirements without Version Specifiers ######
          nose
          nose-cov
          beautifulsoup4
          #
          ###### Requirements with Version Specifiers ######
          #   See https://www.python.org/dev/peps/pep-0440/#version-specifiers
          docopt == 0.6.1             # Version Matching. Must be version 0.6.1
          keyring >= 4.1.1            # Minimum version 4.1.1
          coverage != 3.5             # Version Exclusion. Anything except version 3.5
          Mopidy-Dirble ~= 1.1        # Compatible release. Same as >= 1.1, == 1.*
          #
          ###### Refer to other requirements files ######
          -r other-requirements.txt
          #
          #
          ###### A particular file ######
          ./downloads/numpy-1.9.2-cp34-none-win32.whl
          http://wxpython.org/Phoenix/snapshot-builds/wxPython_Phoenix-3.0.3.dev1820+49a8884-cp34-none-win_amd64.whl
          #
          ###### Additional Requirements without Version Specifiers ######
          #   Same as 1st section, just here to show that you can put things in any order.
          rejected
          green
          #
   Requirement Specifiers
       pip supports installing from a package index using a requirement speci-
       fier.  Generally  speaking,  a  requirement  specifier is composed of a
       project name followed by optional version specifiers.  PEP508  contains
       a  full specification of the format of a requirement (pip does not sup-
       port the url_req form of specifier at this time).
       Some examples:
              SomeProject
              SomeProject == 1.3
              SomeProject >=1.2,<.2.0
              SomeProject[foo, bar]
              SomeProject~=1.4.2
       Since version 6.0, pip also supports specifiers containing  environment
       markers like so:
              SomeProject ==5.4 ; python_version < '2.7'
              SomeProject; sys_platform == 'win32'
       Environment  markers  are supported in the command line and in require-
       ments files.
       NOTE:
          Use quotes around specifiers in the shell when using >, <,  or  when
          using  environment  markers.  Don't use quotes in requirement files.
          [1]
   Per-requirement Overrides
       Since version 7.0 pip supports controlling  the  command  line  options
       given  to  setup.py  via  requirements  files. This disables the use of
       wheels (cached or otherwise) for that package,  as  setup.py  does  not
       exist for wheels.
       The  --global-option  and  --install-option  options  are  used to pass
       options to setup.py. For example:
              FooProject >= 1.2 --global-option="--no-user-cfg" \
                                --install-option="--prefix='/usr/local'" \
                                --install-option="--no-compile"
       The above translates roughly into running FooProject's setup.py  script
       as:
              python setup.py --no-user-cfg install --prefix='/usr/local' --no-compile
       Note  that  the  only way of giving more than one option to setup.py is
       through multiple --global-option and --install-option options, as shown
       in  the  example  above. The value of each option is passed as a single
       argument to the setup.py script. Therefore, a line such as the  follow-
       ing is invalid and would result in an installation error.
          # Invalid. Please use '--install-option' twice as shown above.
          FooProject >= 1.2 --install-option="--prefix=/usr/local --no-compile"
   Pre-release Versions
       Starting  with v1.4, pip will only install stable versions as specified
       by PEP426 by default. If a version cannot  be  parsed  as  a  compliant
       PEP426 version then it is assumed to be a pre-release.
       If  a  Requirement specifier includes a pre-release or development ver-
       sion (e.g. >=0.0.dev0) then pip will allow pre-release and  development
       versions for that requirement. This does not include the != flag.
       The  pip  install  command  also supports a --pre flag that will enable
       installing pre-releases and development releases.
   VCS Support
       pip supports installing from Git, Mercurial, Subversion and Bazaar, and
       detects  the  type  of  VCS  using url prefixes: "git+", "hg+", "bzr+",
       "svn+".
       pip requires a working VCS command on your path: git, hg, svn, or bzr.
       VCS projects can be installed in editable mode  (using  the  --editable
       option) or not.
       o For  editable  installs,  the  clone  location  by  default is "<venv
         path>/src/SomeProject" in virtual environments, and  "<cwd>/src/Some-
         Project" for global installs.  The --src option can be used to modify
         this location.
       o For non-editable installs, the project is built locally in a temp dir
         and  then  installed normally. Note that if a satisfactory version of
         the package is already installed, the VCS source will  not  overwrite
         it  without  an --upgrade flag. VCS requirements pin the package ver-
         sion (specified in the setup.py file) of the target commit, not  nec-
         essarily the commit itself.
       The   "project   name"   component  of  the  url  suffix  "egg=<project
       name>-<version>" is used by pip in its dependency logic to identify the
       project  prior  to  pip  downloading  and  analyzing the metadata.  The
       optional "version" component of the egg name is not functionally impor-
       tant.   It  merely provides a human-readable clue as to what version is
       in use. For projects where setup.py is not  in  the  root  of  project,
       "subdirectory"  component  is  used.  Value of "subdirectory" component
       should be a path starting from root of the project to where setup.py is
       located.
       So if your repository layout is:
          o pkg_dir/
            o setup.py  # setup.py for package pkg
            o some_module.py
          o other_dir/
            o some_file
          o some_other_file
       You'll need to use pip install -e vcs+protocol://repo_url/#egg=pkg&sub-
       directory=pkg_dir.
   Git
       pip currently supports cloning over git, git+http, git+https,  git+ssh,
       git+git and git+file:
       Here are the supported forms:
          [-e] git://git.myproject.org/MyProject#egg=MyProject
          [-e] git+http://git.myproject.org/MyProject#egg=MyProject
          [-e] git+https://git.myproject.org/MyProject#egg=MyProject
          [-e] git+ssh://git.myproject.org/MyProject#egg=MyProject
          [-e] git+git://git.myproject.org/MyProject#egg=MyProject
          [-e] git+file://git.myproject.org/MyProject#egg=MyProject
          -e git+git AT git.org:MyProject#egg=MyProject
       Passing branch names, a commit hash or a tag name is possible like so:
          [-e] git://git.myproject.org/MyProject.git@master#egg=MyProject
          [-e] git://git.myproject.org/MyProject.git AT v1.0#egg=MyProject
          [-e] git://git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709#egg=MyProject
   Mercurial
       The  supported  schemes  are:  hg+http,  hg+https,  hg+static-http  and
       hg+ssh.
       Here are the supported forms:
          [-e] hg+http://hg.myproject.org/MyProject#egg=MyProject
          [-e] hg+https://hg.myproject.org/MyProject#egg=MyProject
          [-e] hg+ssh://hg.myproject.org/MyProject#egg=MyProject
       You can also specify a revision number, a revision hash, a tag name  or
       a local branch name like so:
          [-e] hg+http://hg.myproject.org/MyProject@da39a3ee5e6b#egg=MyProject
          [-e] hg+http://hg.myproject.org/MyProject@2019#egg=MyProject
          [-e] hg+http://hg.myproject.org/MyProject AT v1.0#egg=MyProject
          [-e] hg+http://hg.myproject.org/MyProject@special_feature#egg=MyProject
   Subversion
       pip  supports  the  URL  schemes  svn,  svn+svn,  svn+http,  svn+https,
       svn+ssh.
       You can also give specific revisions to an SVN URL, like so:
          [-e] svn+svn://svn.myproject.org/svn/MyProject#egg=MyProject
          [-e] svn+http://svn.myproject.org/svn/MyProject/trunk@2019#egg=MyProject
       which will check out revision 2019.  @{20080101} would also  check  out
       the revision from 2008-01-01. You can only check out specific revisions
       using -e svn+....
   Bazaar
       pip supports Bazaar using the bzr+http, bzr+https,  bzr+ssh,  bzr+sftp,
       bzr+ftp and bzr+lp schemes.
       Here are the supported forms:
          [-e] bzr+http://bzr.myproject.org/MyProject/trunk#egg=MyProject
          [-e] bzr+sftp://user AT myproject.org/MyProject/trunk#egg=MyProject
          [-e] bzr+ssh://user AT myproject.org/MyProject/trunk#egg=MyProject
          [-e] bzr+ftp://user AT myproject.org/MyProject/trunk#egg=MyProject
          [-e] bzr+lp:MyProject#egg=MyProject
       Tags or revisions can be installed like so:
          [-e] bzr+https://bzr.myproject.org/MyProject/trunk@2019#egg=MyProject
          [-e] bzr+http://bzr.myproject.org/MyProject/trunk AT v1.0#egg=MyProject
   Finding Packages
       pip  searches  for  packages  on  PyPI using the http simple interface,
       which is documented here and there
       pip offers a number of Package Index Options for modifying how packages
       are found.
       pip  looks for packages in a number of places, on PyPI (if not disabled
       via `--no-index`), in the  local  filesystem,  and  in  any  additional
       repositories specified via `--find-links` or `--index-url`. There is no
       ordering in the locations  that  are  searched,  rather  they  are  all
       checked, and the "best" match for the requirements (in terms of version
       number - see PEP440 for details) is selected.
       See the pip install Examples.
   SSL Certificate Verification
       Starting with v1.3, pip  provides  SSL  certificate  verification  over
       https, to prevent man-in-the-middle attacks against PyPI downloads.
   Caching
       Starting with v6.0, pip provides an on-by-default cache which functions
       similarly to that of a web browser. While the cache is  on  by  default
       and is designed do the right thing by default you can disable the cache
       and always access PyPI by utilizing the --no-cache-dir option.
       When making any HTTP request pip will first check its  local  cache  to
       determine  if  it has a suitable response stored for that request which
       has not expired. If it does then it simply returns  that  response  and
       doesn't make the request.
       If  it  has a response stored, but it has expired, then it will attempt
       to make a conditional request to refresh the cache  which  will  either
       return an empty response telling pip to simply use the cached item (and
       refresh the expiration timer) or it will return a  whole  new  response
       which pip can then store in the cache.
       When  storing  items  in  the  cache, pip will respect the CacheControl
       header if it exists, or it will fall back to the Expires header if that
       exists.  This allows pip to function as a browser would, and allows the
       index server to communicate to pip how long it is reasonable  to  cache
       any particular item.
       While  this  cache  attempts  to minimize network activity, it does not
       prevent network access altogether. If you want a local install solution
       that circumvents accessing PyPI, see Installing from local packages.
       The  default  location for the cache directory depends on the Operating
       System:
       Unix   ~/.cache/pip and it respects the XDG_CACHE_HOME directory.
       macOS  ~/Library/Caches/pip.
       Windows
              <CSIDL_LOCAL_APPDATA>\pip\Cache
   Wheel Cache
       Pip will read from the subdirectory wheels within the pip cache  direc-
       tory  and  use  any packages found there. This is disabled via the same
       --no-cache-dir option that disables the HTTP cache. The internal struc-
       ture  of that is not part of the pip API. As of 7.0, pip makes a subdi-
       rectory for each sdist that  wheels  are  built  from  and  places  the
       resulting wheels inside.
       Pip  attempts  to choose the best wheels from those built in preference
       to building a new wheel. Note that this means when a package  has  both
       optional  C extensions and builds py tagged wheels when the C extension
       can't be built that pip will not attempt to build a  better  wheel  for
       Pythons  that would have supported it, once any generic wheel is built.
       To correct this, make sure that the wheels are built with  Python  spe-
       cific tags - e.g. pp on Pypy.
       When  no  wheels  are  found  for an sdist, pip will attempt to build a
       wheel automatically and insert it into the wheel cache.
   Hash-Checking Mode
       Since version 8.0, pip can check downloaded  package  archives  against
       local  hashes  to protect against remote tampering. To verify a package
       against one or more hashes, add them to the end of the line:
          FooProject == 1.2 --hash=sha256:2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 \
                            --hash=sha256:486ea46224d1bb4fb680f34f7c9ad96a8f24ec88be73ea8e5a6c65260e9cb8a7
       (The ability to use multiple hashes is important  when  a  package  has
       both binary and source distributions or when it offers binary distribu-
       tions for a variety of platforms.)
       The recommended hash algorithm at the moment is  sha256,  but  stronger
       ones  are  allowed,  including all those supported by hashlib. However,
       weaker ones such as md5, sha1, and sha224 are excluded to avoid  giving
       a false sense of security.
       Hash verification is an all-or-nothing proposition. Specifying a --hash
       against any requirement not only checks that hash but also activates  a
       global   hash-checking  mode,  which  imposes  several  other  security
       restrictions:
       o Hashes are required for all requirements.  This  is  because  a  par-
         tially-hashed  requirements  file is of little use and thus likely an
         error: a malicious actor could slip bad code  into  the  installation
         via  one  of  the unhashed requirements. Note that hashes embedded in
         URL-style requirements via the #md5=...  syntax  suffice  to  satisfy
         this  rule  (regardless of hash strength, for legacy reasons), though
         you should use a stronger hash like sha256 whenever possible.
       o Hashes are required for all dependencies. An error results  if  there
         is  a  dependency  that is not spelled out and hashed in the require-
         ments file.
       o Requirements that take the form of project names (rather than URLs or
         local  filesystem  paths)  must be pinned to a specific version using
         ==. This prevents a surprising hash mismatch upon the  release  of  a
         new version that matches the requirement specifier.
       o --egg  is  disallowed, because it delegates installation of dependen-
         cies to setuptools, giving up pip's ability to  enforce  any  of  the
         above.
       Hash-checking  mode  can  be  forced  on with the --require-hashes com-
       mand-line option:
          $ pip install --require-hashes -r requirements.txt
              ...
              Hashes are required in --require-hashes mode (implicitly on when a hash is
              specified for any package). These requirements were missing hashes,
              leaving them open to tampering. These are the hashes the downloaded
              archives actually had. You can add lines like these to your requirements
              files to prevent tampering.
                  pyelasticsearch==1.0 --hash=sha256:44ddfb1225054d7d6b1d02e9338e7d4809be94edbe9929a2ec0807d38df993fa
                  more-itertools==2.2 --hash=sha256:93e62e05c7ad3da1a233def6731e8285156701e3419a5fe279017c429ec67ce0
       This can be useful in deploy scripts, to ensure that the author of  the
       requirements file provided hashes. It is also a convenient way to boot-
       strap your list of hashes, since it shows the hashes of the packages it
       fetched. It fetches only the preferred archive for each package, so you
       may still need to add hashes for alternatives archives using pip  hash:
       for instance if there is both a binary and a source distribution.
       The  wheel  cache is disabled in hash-checking mode to prevent spurious
       hash mismatch errors. These  would  otherwise  occur  while  installing
       sdists  that  had  already been automatically built into cached wheels:
       those wheels would be selected for installation, but their hashes would
       not  match the sdist ones from the requirements file. A further compli-
       cation is that locally built wheels are nondeterministic:  contemporary
       modification  times  make  their  way  into  the archive, making hashes
       unpredictable across machines and cache flushes. Compilation of C  code
       adds  further  nondeterminism,  as many compilers include random-seeded
       values in their output. However, wheels fetched from index servers  are
       the  same  every  time.  They  land  in pip's HTTP cache, not its wheel
       cache, and are used normally in hash-checking mode. The  only  downside
       of having the wheel cache disabled is thus extra build time for sdists,
       and this can be solved by making sure pre-built  wheels  are  available
       from the index server.
       Hash-checking  mode  also works with pip download and pip wheel. A com-
       parison of hash-checking mode with other  repeatability  strategies  is
       available in the User Guide.
       WARNING:
          Beware  of  the  setup_requires  keyword arg in setup.py. The (rare)
          packages that use it will cause those dependencies to be  downloaded
          by setuptools directly, skipping pip's hash-checking. If you need to
          use such a package, see Controlling setup_requires.
       WARNING:
          Be careful not to nullify all your security work  when  you  install
          your  actual  project  by using setuptools directly: for example, by
          calling  python  setup.py  install,  python  setup.py  develop,   or
          easy_install.   Setuptools   will   happily  go  out  and  download,
          unchecked, anything you missed in your requirements  file--and  it's
          easy  to  miss  things  as your project evolves. To be safe, install
          your project using pip and --no-deps.
          Instead of python setup.py develop, use...
              pip install --no-deps -e .
          Instead of python setup.py install, use...
              pip install --no-deps .
   Hashes from PyPI
       PyPI provides an MD5 hash in the fragment portion of each package down-
       load  URL,  like  #md5=123..., which pip checks as a protection against
       download corruption. Other hash algorithms that have guaranteed support
       from hashlib are also supported here: sha1, sha224, sha384, sha256, and
       sha512. Since this hash originates remotely, it is not a  useful  guard
       against tampering and thus does not satisfy the --require-hashes demand
       that every package have a local hash.
   Editable Installs
       "Editable"  installs  are  fundamentally  "setuptools   develop   mode"
       installs.
       You can install local projects or VCS projects in "editable" mode:
          $ pip install -e path/to/SomeProject
          $ pip install -e git+http://repo/my_project.git#egg=SomeProject
       (See  the VCS Support section above for more information on VCS-related
       syntax.)
       For local projects, the  "SomeProject.egg-info"  directory  is  created
       relative  to  the  project path.  This is one advantage over just using
       setup.py develop, which creates the "egg-info"  directly  relative  the
       current working directory.
   Controlling setup_requires
       Setuptools  offers  the  setup_requires  setup() keyword for specifying
       dependencies that need to be present in order for the  setup.py  script
       to  run.   Internally,  Setuptools  uses  easy_install to fulfill these
       dependencies.
       pip has no way to control how these dependencies are located.  None  of
       the Package Index Options have an effect.
       The solution is to configure a "system" or "personal" Distutils config-
       uration file to manage the fulfillment.
       For example, to have the dependency located at an alternate index,  add
       this:
          [easy_install]
          index_url = https://my.index-mirror.com
       To  have  the  dependency  located from a local directory and not crawl
       PyPI, add this:
          [easy_install]
          allow_hosts = ''
          find_links = file:///path/to/local/archives/
   Build System Interface
       In order for pip to install a package from source, setup.py must imple-
       ment the following commands:
          setup.py egg_info [--egg-base XXX]
          setup.py install --record XXX [--single-version-externally-managed] [--root XXX] [--compile|--no-compile] [--install-headers XXX]
       The  egg_info  command  should  create egg metadata for the package, as
       described      in      the      setuptools       documentation       at
       https://setuptools.readthedocs.io/en/latest/setuptools.html#egg-info-create-egg-metadata-and-set-build-tags
       The install command should implement the complete process of installing
       the package to the target directory XXX.
       To install a package in "editable" mode (pip install -e), setup.py must
       implement the following command:
          setup.py develop --no-deps
       This should implement the complete process of installing the package in
       "editable" mode.
       All packages will be attempted to built into wheels:
          setup.py bdist_wheel -d XXX
       One further setup.py command is invoked by pip install:
          setup.py clean
       This  command is invoked to clean up temporary commands from the build.
       (TODO: Investigate in more detail when this command is required).
       No other build system commands are invoked by the pip install command.
       Installing a package from a wheel does not invoke the build  system  at
       all.
   Options
       -c, --constraint <file>
              Constrain versions using the given constraints file. This option
              can be used multiple times.
       -e, --editable <path/url>
              Install a project in editable  mode  (i.e.  setuptools  "develop
              mode") from a local project path or a VCS url.
       -r, --requirement <file>
              Install  from  the  given  requirements file. This option can be
              used multiple times.
       -b, --build <dir>
              Directory to unpack packages into and build in.
       -t, --target <dir>
              Install packages into <dir>. By default this  will  not  replace
              existing files/folders in <dir>. Use --upgrade to replace exist-
              ing packages in <dir> with new versions.
       -d, --download <dir>
              Download packages into <dir> instead of installing them, regard-
              less of what's already installed.
       --src <dir>
              Directory  to check out editable projects into. The default in a
              virtualenv is "<venv path>/src". The default for global installs
              is "<current dir>/src".
       -U, --upgrade
              Upgrade  all specified packages to the newest available version.
              The handling of dependencies  depends  on  the  upgrade-strategy
              used.
       --upgrade-strategy <upgrade_strategy>
              Determines how dependency upgrading should be handled. "eager" -
              dependencies are upgraded regardless of  whether  the  currently
              installed  version  satisfies  the  requirements of the upgraded
              package(s). "only-if-needed" -  are upgraded only when  they  do
              not satisfy the requirements of the upgraded package(s).
       --force-reinstall
              When  upgrading, reinstall all packages even if they are already
              up-to-date.
       -I, --ignore-installed
              Ignore the installed packages (reinstalling instead).
       --ignore-requires-python
              Ignore the Requires-Python information.
       --no-deps
              Don't install package dependencies.
       --install-option <options>
              Extra arguments to be supplied to the setup.py  install  command
              (use      like     --install-option="--install-scripts=<sys.pre-
              fix>/local/bin"). Use multiple --install-option options to  pass
              multiple options to setup.py install. If you are using an option
              with a directory path, be sure to use absolute path.
       --global-option <options>
              Extra global options to be supplied to the setup.py call  before
              the install command.
       --user Install  to the Python user install directory for your platform.
              Typically ~/.local/, or %APPDATA%Python  on  Windows.  (See  the
              Python documentation for site.USER_BASE for full details.)
       --egg  Install  packages  as  eggs, not 'flat', like pip normally does.
              This option is not about installing from eggs. (WARNING: Because
              this  option  overrides pip's normal install logic, requirements
              files may not behave as expected.)
       --root <dir>
              Install everything relative to this alternate root directory.
       --prefix <dir>
              Installation prefix where lib, bin and other  top-level  folders
              are placed
       --compile
              Compile py files to pyc
       --no-compile
              Do not compile py files to pyc
       --no-use-wheel
              Do not Find and prefer wheel archives when searching indexes and
              find-links locations. DEPRECATED in favour of --no-binary.
       --no-binary <format_control>
              Do not use binary packages. Can be supplied multiple times,  and
              each  time  adds  to the existing value. Accepts either :all: to
              disable all binary packages, :none: to empty the set, or one  or
              more  package  names  with  commas  between them. Note that some
              packages are tricky to compile and may fail to install when this
              option is used on them.
       --only-binary <format_control>
              Do  not use source packages. Can be supplied multiple times, and
              each time adds to the existing value. Accepts  either  :all:  to
              disable  all source packages, :none: to empty the set, or one or
              more package names with commas between  them.  Packages  without
              binary  distributions  will  fail to install when this option is
              used on them.
       --pre  Include pre-release and development versions.  By  default,  pip
              only finds stable versions.
       --no-clean
              Don't clean up build directories.
       --require-hashes
              Require a hash to check each requirement against, for repeatable
              installs. This option is implied when any package in a  require-
              ments file has a --hash option.
       -i, --index-url <url>
              Base     URL     of     Python     Package     Index    (default
              https://pypi.python.org/simple). This should point to a  reposi-
              tory  compliant  with  PEP  503 (the simple repository API) or a
              local directory laid out in the same format.
       --extra-index-url <url>
              Extra URLs of package indexes to use in addition to --index-url.
              Should follow the same rules as --index-url.
       --no-index
              Ignore   package   index  (only  looking  at  --find-links  URLs
              instead).
       -f, --find-links <url>
              If a url or path to an html file, then parse for  links  to  ar-
              chives.  If a local path or file:// url that's a directory, then
              look for archives in the directory listing.
       --process-dependency-links
              Enable the processing of dependency links.
   Examples
       1. Install SomePackage and its dependencies from PyPI using Requirement
          Specifiers
                 $ pip install SomePackage            # latest version
                 $ pip install SomePackage==1.0.4     # specific version
                 $ pip install 'SomePackage>=1.0.4'     # minimum version
       2. Install  a  list  of  requirements  specified  in  a  file.  See the
          Requirements files.
                 $ pip install -r requirements.txt
       3. Upgrade an already installed SomePackage to the latest from PyPI.
                 $ pip install --upgrade SomePackage
       4. Install a local project in  "editable"  mode.  See  the  section  on
          Editable Installs.
                 $ pip install -e .                     # project in current directory
                 $ pip install -e path/to/project       # project in another directory
       5. Install  a  project from VCS in "editable" mode. See the sections on
          VCS Support and Editable Installs.
                 $ pip install -e git+https://git.repo/some_pkg.git#egg=SomePackage          # from git
                 $ pip install -e hg+https://hg.repo/some_pkg.git#egg=SomePackage            # from mercurial
                 $ pip install -e svn+svn://svn.repo/some_pkg/trunk/#egg=SomePackage         # from svn
                 $ pip install -e git+https://git.repo/some_pkg.git@feature#egg=SomePackage  # from 'feature' branch
                 $ pip install -e "git+https://git.repo/some_repo.git#egg=subdir&subdirectory=subdir_path" # install a python package from a repo subdirectory
       6. Install a package with setuptools extras.
                 $ pip install SomePackage[PDF]
                 $ pip install git+https://git.repo/some_pkg.git#egg=SomePackage[PDF]
                 $ pip install SomePackage[PDF]==3.0
                 $ pip install -e .[PDF]==3.0  # editable project in current directory
       7. Install a particular source archive file.
                 $ pip install ./downloads/SomePackage-1.0.4.tar.gz
                 $ pip install http://my.package.repo/SomePackage-1.0.4.zip
       8. Install from alternative package repositories.
          Install from a different index, and not PyPI
             $ pip install --index-url http://my.package.repo/simple/ SomePackage
          Search an additional index during install, in addition to PyPI
             $ pip install --extra-index-url http://my.package.repo/simple SomePackage
          Install from a local flat directory containing archives  (and  don't
          scan indexes):
             $ pip install --no-index --find-links=file:///local/dir/ SomePackage
             $ pip install --no-index --find-links=/local/dir/ SomePackage
             $ pip install --no-index --find-links=relative/dir/ SomePackage
       9. Find  pre-release  and  development  versions, in addition to stable
          versions.  By default, pip only finds stable versions.
                 $ pip install --pre SomePackage
                                        ----
       [1]  This is true with the exception that pip v7.0 and v7.0.1  required
            quotes   around   specifiers  containing  environment  markers  in
            requirement files.
   pip download
   Contents
       o pip download
         o Usage
         o Description
           o Overview
         o Options
         o Examples
   Usage
          pip download [options] <requirement specifier> [package-index-options] ...
          pip download [options] -r <requirements file> [package-index-options] ...
          pip download [options] [-e] <vcs project url> ...
          pip download [options] [-e] <local project path> ...
          pip download [options] <archive url/path> ...
   Description
       Download packages from:
       o PyPI (and other indexes) using requirement specifiers.
       o VCS project urls.
       o Local project directories.
       o Local or remote source archives.
       pip also supports downloading from "requirements files", which  provide
       an easy way to specify a whole environment to be downloaded.
   Overview
       pip  download  replaces  the --download option to pip install, which is
       now deprecated and will be removed in pip 10.
       pip download does the same resolution and downloading as  pip  install,
       but  instead of installing the dependencies, it collects the downloaded
       distributions into the directory provided (defaulting  to  the  current
       directory).  This  directory  can  later  be passed as the value to pip
       install --find-links to  facilitate  offline  or  locked  down  package
       installation.
       pip  download  with the --platform, --python-version, --implementation,
       and --abi options provides the ability to  fetch  dependencies  for  an
       interpreter  and  system  other  than  the ones that pip is running on.
       --only-binary=:all: is required when using any of these options. It  is
       important  to  note  that these options all default to the current sys-
       tem/interpreter, and not to  the  most  restrictive  constraints  (e.g.
       platform  any, abi none, etc). To avoid fetching dependencies that hap-
       pen to match the constraint of the current interpreter  (but  not  your
       target  one),  it is recommended to specify all of these options if you
       are specifying  one  of  them.  Generic  dependencies  (e.g.  universal
       wheels,  or  dependencies with no platform, abi, or implementation con-
       straints) will still match an over- constrained download requirement.
   Options
       -c, --constraint <file>
              Constrain versions using the given constraints file. This option
              can be used multiple times.
       -e, --editable <path/url>
              Install  a  project  in  editable mode (i.e. setuptools "develop
              mode") from a local project path or a VCS url.
       -r, --requirement <file>
              Install from the given requirements file.  This  option  can  be
              used multiple times.
       -b, --build <dir>
              Directory to unpack packages into and build in.
       --no-deps
              Don't install package dependencies.
       --global-option <options>
              Extra  global options to be supplied to the setup.py call before
              the install command.
       --no-binary <format_control>
              Do not use binary packages. Can be supplied multiple times,  and
              each  time  adds  to the existing value. Accepts either :all: to
              disable all binary packages, :none: to empty the set, or one  or
              more  package  names  with  commas  between them. Note that some
              packages are tricky to compile and may fail to install when this
              option is used on them.
       --only-binary <format_control>
              Do  not use source packages. Can be supplied multiple times, and
              each time adds to the existing value. Accepts  either  :all:  to
              disable  all source packages, :none: to empty the set, or one or
              more package names with commas between  them.  Packages  without
              binary  distributions  will  fail to install when this option is
              used on them.
       --src <dir>
              Directory to check out editable projects into. The default in  a
              virtualenv is "<venv path>/src". The default for global installs
              is "<current dir>/src".
       --pre  Include pre-release and development versions.  By  default,  pip
              only finds stable versions.
       --no-clean
              Don't clean up build directories.
       --require-hashes
              Require a hash to check each requirement against, for repeatable
              installs. This option is implied when any package in a  require-
              ments file has a --hash option.
       -d, --dest <dir>
              Download packages into <dir>.
       --platform <platform>
              Only download wheels compatible with <platform>. Defaults to the
              platform of the running system.
       --python-version <python_version>
              Only download wheels compatible with Python interpreter  version
              <version>. If not specified, then the current system interpreter
              minor version is used. A major version (e.g. '2') can be  speci-
              fied  to  match  all  minor revs of that major version.  A minor
              version (e.g. '34') can also be specified.
       --implementation <implementation>
              Only  download  wheels  compatible  with  Python  implementation
              <implementation>, e.g. 'pp', 'jy', 'cp',  or 'ip'. If not speci-
              fied, then the current interpreter implementation is used.   Use
              'py' to force implementation-agnostic wheels.
       --abi <abi>
              Only  download  wheels  compatible  with  Python abi <abi>, e.g.
              'pypy_41'.  If not specified, then the current  interpreter  abi
              tag  is  used.  Generally you will need to specify --implementa-
              tion, --platform, and --python-version when using this option.
       -i, --index-url <url>
              Base    URL     of     Python     Package     Index     (default
              https://pypi.python.org/simple).  This should point to a reposi-
              tory compliant with PEP 503 (the simple  repository  API)  or  a
              local directory laid out in the same format.
       --extra-index-url <url>
              Extra URLs of package indexes to use in addition to --index-url.
              Should follow the same rules as --index-url.
       --no-index
              Ignore  package  index  (only  looking  at   --find-links   URLs
              instead).
       -f, --find-links <url>
              If  a  url  or path to an html file, then parse for links to ar-
              chives. If a local path or file:// url that's a directory,  then
              look for archives in the directory listing.
       --process-dependency-links
              Enable the processing of dependency links.
   Examples
       1. Download a package and all of its dependencies
                 $ pip download SomePackage
                 $ pip download -d . SomePackage  # equivalent to above
                 $ pip download --no-index --find-links=/tmp/wheelhouse -d /tmp/otherwheelhouse SomePackage
       2.
          Download  a  package  and  all of its dependencies with OSX specific
          interpreter constraints.
                 This forces OSX 10.10 or lower compatibility. Since OSX  deps
                 are    forward    compatible,    this    will    also   match
                 macosx-10_9_x86_64,  macosx-10_8_x86_64,   macosx-10_8_intel,
                 etc.   It  will also match deps with platform any. Also force
                 the interpreter version to 27 (or more generic, i.e.  2)  and
                 implementation to cp (or more generic, i.e. py).
                    $ pip download \
                        --only-binary=:all: \
                        --platform macosx-10_10_x86_64 \
                        --python-version 27 \
                        --implementation cp \
                        SomePackage
       3.
          Download  a  package  and  its dependencies with linux specific con-
          straints.
                 Force the interpreter to be any minor version  of  py3k,  and
                 only accept cp34m or none as the abi.
                    $ pip download \
                        --only-binary=:all: \
                        --platform linux_x86_64 \
                        --python-version 3 \
                        --implementation cp \
                        --abi cp34m \
                        SomePackage
       4. Force platform, implementation, and abi agnostic deps.
                 $ pip download \
                     --only-binary=:all: \
                     --platform any \
                     --python-version 3 \
                     --implementation py \
                     --abi none \
                     SomePackage
       5. Even  when  overconstrained, this will still correctly fetch the pip
          universal wheel.
                 $ pip download \
                     --only-binary=:all: \
                     --platform linux_x86_64 \
                     --python-version 33 \
                     --implementation cp \
                     --abi cp34m \
                     pip>=8
                 $ ls pip-8.1.1-py2.py3-none-any.whl
                 pip-8.1.1-py2.py3-none-any.whl
   pip uninstall
   Contents
       o pip uninstall
         o Usage
         o Description
         o Options
         o Examples
   Usage
          pip uninstall [options] <package> ...
          pip uninstall [options] -r <requirements file> ...
   Description
       Uninstall packages.
       pip is able to uninstall most installed packages. Known exceptions are:
       o Pure distutils packages installed with python setup.py install, which
         leave behind no metadata to determine what files were installed.
       o Script wrappers installed by python setup.py develop.
   Options
       -r, --requirement <file>
              Uninstall  all  the  packages  listed  in the given requirements
              file.  This option can be used multiple times.
       -y, --yes
              Don't ask for confirmation of uninstall deletions.
   Examples
       1. Uninstall a package.
              $ pip uninstall simplejson
              Uninstalling simplejson:
                /home/me/env/lib/python2.7/site-packages/simplejson
                /home/me/env/lib/python2.7/site-packages/simplejson-2.2.1-py2.7.egg-info
              Proceed (y/n)? y
                Successfully uninstalled simplejson
   pip freeze
   Contents
       o pip freeze
         o Usage
         o Description
         o Options
         o Examples
   Usage
          pip freeze [options]
   Description
       Output installed packages in requirements format.
       packages are listed in a case-insensitive sorted order.
   Options
       -r, --requirement <file>
              Use the order in the given requirements file  and  its  comments
              when generating output. This option can be used multiple times.
       -f, --find-links <url>
              URL for finding packages, which will be added to the output.
       -l, --local
              If  in  a virtualenv that has global access, do not output glob-
              ally-installed packages.
       --user Only output packages installed in user-site.
       --all  Do not skip these packages in the output: pip, setuptools,  dis-
              tribute, wheel
   Examples
       1. Generate output suitable for a requirements file.
                 $ pip freeze
                 docutils==0.11
                 Jinja2==2.7.2
                 MarkupSafe==0.19
                 Pygments==1.6
                 Sphinx==1.2.2
       2. Generate  a  requirements  file  and then install from it in another
          environment.
                 $ env1/bin/pip freeze > requirements.txt
                 $ env2/bin/pip install -r requirements.txt
   pip list
   Contents
       o pip list
         o Usage
         o Description
         o Options
         o Examples
   Usage
          pip list [options]
   Description
       List installed packages, including editables.
       Packages are listed in a case-insensitive sorted order.
   Options
       -o, --outdated
              List outdated packages
       -u, --uptodate
              List uptodate packages
       -e, --editable
              List editable projects.
       -l, --local
              If in a virtualenv that has global access,  do  not  list  glob-
              ally-installed packages.
       --user Only output packages installed in user-site.
       --pre  Include  pre-release  and  development versions. By default, pip
              only finds stable versions.
       --format <list_format>
              Select the  output  format  among:  legacy  (default),  columns,
              freeze or json.
       --not-required
              List packages that are not dependencies of installed packages.
       -i, --index-url <url>
              Base     URL     of     Python     Package     Index    (default
              https://pypi.python.org/simple). This should point to a  reposi-
              tory  compliant  with  PEP  503 (the simple repository API) or a
              local directory laid out in the same format.
       --extra-index-url <url>
              Extra URLs of package indexes to use in addition to --index-url.
              Should follow the same rules as --index-url.
       --no-index
              Ignore   package   index  (only  looking  at  --find-links  URLs
              instead).
       -f, --find-links <url>
              If a url or path to an html file, then parse for  links  to  ar-
              chives.  If a local path or file:// url that's a directory, then
              look for archives in the directory listing.
       --process-dependency-links
              Enable the processing of dependency links.
   Examples
       1. List installed packages.
                 $ pip list
                 docutils (0.10)
                 Jinja2 (2.7.2)
                 MarkupSafe (0.18)
                 Pygments (1.6)
                 Sphinx (1.2.1)
       2. List outdated packages (excluding editables), and the latest version
          available.
                 $ pip list --outdated
                 docutils (Current: 0.10 Latest: 0.11)
                 Sphinx (Current: 1.2.1 Latest: 1.2.2)
       3. List installed packages with column formatting.
                 $ pip list --format columns
                 Package Version
                 ------- -------
                 docopt  0.6.2
                 idlex   1.13
                 jedi    0.9.0
       4. List outdated packages with column formatting.
                 $ pip list -o --format columns
                 Package    Version Latest Type
                 ---------- ------- ------ -----
                 retry      0.8.1   0.9.1  wheel
                 setuptools 20.6.7  21.0.0 wheel
       5. List  packages  that  are not dependencies of other packages. Can be
          combined with other options.
                 $ pip list --outdated --not-required
                 docutils (Current: 0.10 Latest: 0.11)
       6. Use legacy formatting
                 $ pip list --format=legacy
                 colorama (0.3.7)
                 docopt (0.6.2)
                 idlex (1.13)
                 jedi (0.9.0)
       7. Use json formatting
                 $ pip list --format=json
                 [{'name': 'colorama', 'version': '0.3.7'}, {'name': 'docopt', 'version': '0.6.2'}, ...
       8. Use freeze formatting
                 $ pip list --format=freeze
                 colorama==0.3.7
                 docopt==0.6.2
                 idlex==1.13
                 jedi==0.9.0
   pip show
   Contents
       o pip show
         o Usage
         o Description
         o Options
         o Examples
   Usage
          pip show [options] <package> ...
   Description
       Show information about one or more installed packages.
   Options
       -f, --files
              Show the full list of installed files for each package.
   Examples
       1. Show information about a package:
                 $ pip show sphinx
                 Name: Sphinx
                 Version: 1.4.5
                 Summary: Python documentation generator
                 Home-page: http://sphinx-doc.org/
                 Author: Georg Brandl
                 Author-email: georg AT python.org
                 License: BSD
                 Location: /my/env/lib/python2.7/site-packages
                 Requires: docutils, snowballstemmer, alabaster, Pygments, imagesize, Jinja2, babel, six
       2. Show all information about a package
                 $ pip show --verbose sphinx
                 Name: Sphinx
                 Version: 1.4.5
                 Summary: Python documentation generator
                 Home-page: http://sphinx-doc.org/
                 Author: Georg Brandl
                 Author-email: georg AT python.org
                 License: BSD
                 Location: /my/env/lib/python2.7/site-packages
                 Requires: docutils, snowballstemmer, alabaster, Pygments, imagesize, Jinja2, babel, six
                 Metadata-Version: 2.0
                 Installer:
                 Classifiers:
                   Development Status :: 5 - Production/Stable
                   Environment :: Console
                   Environment :: Web Environment
                   Intended Audience :: Developers
                   Intended Audience :: Education
                   License :: OSI Approved :: BSD License
                   Operating System :: OS Independent
                   Programming Language :: Python
                   Programming Language :: Python :: 2
                   Programming Language :: Python :: 3
                   Framework :: Sphinx
                   Framework :: Sphinx :: Extension
                   Framework :: Sphinx :: Theme
                   Topic :: Documentation
                   Topic :: Documentation :: Sphinx
                   Topic :: Text Processing
                   Topic :: Utilities
                 Entry-points:
                   [console_scripts]
                   sphinx-apidoc = sphinx.apidoc:main
                   sphinx-autogen = sphinx.ext.autosummary.generate:main
                   sphinx-build = sphinx:main
                   sphinx-quickstart = sphinx.quickstart:main
                   [distutils.commands]
                   build_sphinx = sphinx.setup_command:BuildDoc
   pip search
   Contents
       o pip search
         o Usage
         o Description
         o Options
         o Examples
   Usage
          pip search [options] <query>
   Description
       Search for PyPI packages whose name or summary contains <query>.
   Options
       -i, --index <url>
              Base    URL     of     Python     Package     Index     (default
              https://pypi.python.org/pypi)
   Examples
       1. Search for "peppercorn"
                 $ pip search peppercorn
                 pepperedform    - Helpers for using peppercorn with formprocess.
                 peppercorn      - A library for converting a token stream into [...]
   pip wheel
   Contents
       o pip wheel
         o Usage
         o Description
           o Build System Interface
             o Customising the build
         o Options
         o Examples
   Usage
          pip wheel [options] <requirement specifier> ...
          pip wheel [options] -r <requirements file> ...
          pip wheel [options] [-e] <vcs project url> ...
          pip wheel [options] [-e] <local project path> ...
          pip wheel [options] <archive url/path> ...
   Description
       Build Wheel archives for your requirements and dependencies.
       Wheel is a built-package format, and offers the advantage of not recom-
       piling your software during every install. For more  details,  see  the
       wheel docs: https://wheel.readthedocs.io/en/latest/
       Requirements: setuptools>=0.8, and wheel.
       'pip  wheel'  uses  the bdist_wheel setuptools extension from the wheel
       package to build individual wheels.
   Build System Interface
       In order for  pip  to  build  a  wheel,  setup.py  must  implement  the
       bdist_wheel command with the following syntax:
          python setup.py bdist_wheel -d TARGET
       This  command  must  create a wheel compatible with the invoking Python
       interpreter, and save that wheel in the directory TARGET.
       No other build system commands are invoked by the pip wheel command.
   Customising the build
       It is possible using --global-option to include additional  build  com-
       mands  with  their arguments in the setup.py command. This is currently
       the only way to influence the building of C extensions from the command
       line. For example:
          pip wheel --global-option bdist_ext --global-option -DFOO wheel
       will result in a build command of
          setup.py bdist_ext -DFOO bdist_wheel -d TARGET
       which passes a preprocessor symbol to the extension build.
       Such usage is considered highly build-system specific and more an acci-
       dent of the current implementation than a supported interface.
   Options
       -w, --wheel-dir <dir>
              Build wheels into <dir>, where the default is the current  work-
              ing directory.
       --no-use-wheel
              Do not Find and prefer wheel archives when searching indexes and
              find-links locations. DEPRECATED in favour of --no-binary.
       --no-binary <format_control>
              Do not use binary packages. Can be supplied multiple times,  and
              each  time  adds  to the existing value. Accepts either :all: to
              disable all binary packages, :none: to empty the set, or one  or
              more  package  names  with  commas  between them. Note that some
              packages are tricky to compile and may fail to install when this
              option is used on them.
       --only-binary <format_control>
              Do  not use source packages. Can be supplied multiple times, and
              each time adds to the existing value. Accepts  either  :all:  to
              disable  all source packages, :none: to empty the set, or one or
              more package names with commas between  them.  Packages  without
              binary  distributions  will  fail to install when this option is
              used on them.
       --build-option <options>
              Extra arguments to be supplied to 'setup.py bdist_wheel'.
       -c, --constraint <file>
              Constrain versions using the given constraints file. This option
              can be used multiple times.
       -e, --editable <path/url>
              Install  a  project  in  editable mode (i.e. setuptools "develop
              mode") from a local project path or a VCS url.
       -r, --requirement <file>
              Install from the given requirements file.  This  option  can  be
              used multiple times.
       --src <dir>
              Directory  to check out editable projects into. The default in a
              virtualenv is "<venv path>/src". The default for global installs
              is "<current dir>/src".
       --ignore-requires-python
              Ignore the Requires-Python information.
       --no-deps
              Don't install package dependencies.
       -b, --build <dir>
              Directory to unpack packages into and build in.
       --global-option <options>
              Extra  global options to be supplied to the setup.py call before
              the 'bdist_wheel' command.
       --pre  Include pre-release and development versions.  By  default,  pip
              only finds stable versions.
       --no-clean
              Don't clean up build directories.
       --require-hashes
              Require a hash to check each requirement against, for repeatable
              installs. This option is implied when any package in a  require-
              ments file has a --hash option.
       -i, --index-url <url>
              Base     URL     of     Python     Package     Index    (default
              https://pypi.python.org/simple). This should point to a  reposi-
              tory  compliant  with  PEP  503 (the simple repository API) or a
              local directory laid out in the same format.
       --extra-index-url <url>
              Extra URLs of package indexes to use in addition to --index-url.
              Should follow the same rules as --index-url.
       --no-index
              Ignore   package   index  (only  looking  at  --find-links  URLs
              instead).
       -f, --find-links <url>
              If a url or path to an html file, then parse for  links  to  ar-
              chives.  If a local path or file:// url that's a directory, then
              look for archives in the directory listing.
       --process-dependency-links
              Enable the processing of dependency links.
   Examples
       1. Build wheels for a requirement (and all its dependencies), and  then
          install
                 $ pip wheel --wheel-dir=/tmp/wheelhouse SomePackage
                 $ pip install --no-index --find-links=/tmp/wheelhouse SomePackage
   pip hash
   Contents
       o pip hash
         o Usage
         o Description
           o Overview
         o Options
         o Example
   Usage
          pip hash [options] <file> ...
   Description
       Compute a hash of a local package archive.
       These  can  be used with --hash in a requirements file to do repeatable
       installs.
   Overview
       pip hash is a convenient  way  to  get  a  hash  digest  for  use  with
       hash-checking mode, especially for packages with multiple archives. The
       error message from pip install --require-hashes ... will give  you  one
       hash,  but,  if  there  are  multiple  archives (like source and binary
       ones), you will need to manually download and compute a  hash  for  the
       others.  Otherwise,  a  spurious  hash  mismatch  could  occur when pip
       install is passed a different set of options, like --no-binary.
   Options
       -a, --algorithm <algorithm>
              The hash algorithm to use: one of sha256, sha384, sha512
   Example
       Compute the hash of a downloaded archive:
          $ pip download SomePackage
              Collecting SomePackage
                Downloading SomePackage-2.2.tar.gz
                Saved ./pip_downloads/SomePackage-2.2.tar.gz
              Successfully downloaded SomePackage
          $ pip hash ./pip_downloads/SomePackage-2.2.tar.gz
              ./pip_downloads/SomePackage-2.2.tar.gz:
              --hash=sha256:93e62e05c7ad3da1a233def6731e8285156701e3419a5fe279017c429ec67ce0
DEVELOPMENT
   Pull Requests
       o Submit Pull Requests against the master branch.
       o Provide a good description of what you're doing and why.
       o Provide tests that cover your  changes  and  try  to  run  the  tests
         locally first.
       Example. Assuming you set up GitHub account, forked pip repository from
       https://github.com/pypa/pip to your own page  via  web  interface,  and
       your fork is located at https://github.com/yourname/pip
          $ git clone git AT github.com:pypa/pip.git
          $ cd pip
          # ...
          $ git diff
          $ git add <modified> ...
          $ git status
          $ git commit
       You  may  reference  relevant issues in commit messages (like #1259) to
       make GitHub link issues and commits  together,  and  with  phrase  like
       "fixes  #1259"  you  can  even close relevant issues automatically. Now
       push the changes to your fork:
          $ git push git AT github.com:yourname/pip.git
       Open Pull Requests page  at  https://github.com/yourname/pip/pulls  and
       click "New pull request". That's it.
   Automated Testing
       All  pull  requests  and merges to 'master' branch are tested in Travis
       based on our .travis.yml file.
       Usually, a link to your specific travis build appears in pull requests,
       but if not, you can find it on our travis pull requests page
       The  only  way to trigger Travis to run again for a pull request, is to
       submit another change to the pull branch.
       We also have Jenkins CI that runs regularly for certain python versions
       on windows and centos.
   Running tests
       OS Requirements: subversion, bazaar, git, and mercurial.
       Python Requirements: tox or pytest, virtualenv, scripttest, and mock
       Ways to run the tests locally:
          $ tox -e py33           # The preferred way to run the tests, can use pyNN to
                                  # run for a particular version or leave off the -e to
                                  # run for all versions.
          $ python setup.py test  # Using the setuptools test plugin
          $ py.test               # Using py.test directly
          $ tox                   # Using tox against pip's tox.ini
       If  you  are missing one of the VCS tools, you can tell py.test to skip
       it:
          $ py.test -k 'not bzr'
          $ py.test -k 'not svn'
   Getting Involved
       The pip project welcomes help in the following ways:
       o Making Pull Requests for code, tests, or docs.
       o Commenting on open issues and pull requests.
       o Helping to answer questions on the mailing list.
       If you want to become an official maintainer, start by helping out.
       Later, when you think you're ready, get in touch with one of the  main-
       tainers, and they will initiate a vote.
   Release Process
       1. On the current pip master branch, generate a new AUTHORS.txt by run-
          ning invoke generate.authors and commit the results.
       2. On the current pip master branch, make a new commit which bumps  the
          version  in  pip/__init__.py  to  the release version and adjust the
          CHANGES.txt file to reflect the current date.
       3. Create a signed tag of the master branch of the form X.Y.Z using the
          command git tag -s X.Y.Z.
       4. Checkout  the  tag using git checkout X.Y.Z and create the distribu-
          tion files using python setup.py sdist bdist_wheel.
       5. Upload the distribution files to PyPI using twine (twine  upload  -s
          dist/*).  The  upload should include GPG signatures of the distribu-
          tion files.
       6. Push all of the changes.
       7. Regenerate the get-pip.py script by running invoke generate.install-
          er in the get-pip repository, and committing the results.
   Creating a Bugfix Release
       Sometimes  we  need to release a bugfix release of the form X.Y.Z+1. In
       order to create one of these the changes should already be merged  into
       the master branch.
       1. Create  a  new release/X.Y.Z+1 branch off of the X.Y.Z tag using the
          command git checkout -b release/X.Y.Z+1 X.Y.Z.
       2. Cherry pick the fixed commits off of the master branch,  fixing  any
          conflicts and moving any changelog entries from the development ver-
          sion's changelog section to the X.Y.Z+1 section.
       3. Push the release/X.Y.Z+1 branch to github and submit  a  PR  for  it
          against the master branch and wait for the tests to run.
       4. Once  tests  run,  merge the release/X.Y.Z+1 branch into master, and
          follow the above release process starting with step 4.
RELEASE NOTES
       9.0.3 (2018-03-21)
       o Fix an error where the vendored requests was not correctly containing
         itself to only the internal vendored prefix.
       o Restore compatability with 2.6.
       9.0.2 (2018-03-16)
       o Fallback to using SecureTransport on macOS when the linked OpenSSL is
         too old to support TLSv1.2.
       9.0.1 (2016-11-06)
       o Correct the deprecation message when not  specifying  a  --format  so
         that it uses the correct setting name (format) rather than the incor-
         rect one (list_format) (#4058).
       o Fix pip check to check all available distributions and not  just  the
         local ones (#4083).
       o Fix a crash on non ASCII characters from lsb_release (#4062).
       o Fix  an  SyntaxError in an an used module of a vendored dependency (-
         #4059).
       o Fix UNC paths on Windows (#4064).
       9.0.0 (2016-11-02)
       o BACKWARD INCOMPATIBLE Remove the attempted autodetection of  require-
         ment names from URLs, URLs must include a name via #egg=.
       o DEPRECATION  pip  install  --egg  have  been  deprecated  and will be
         removed in the future. This "feature" has a long  list  of  drawbacks
         which  break  nearly  all  of  pip's  other  features  in  subtle and
         hard-to-diagnose ways.
       o DEPRECATION --default-vcs option (#4052).
       o WARNING pip 9 cache can break forward compatibility with previous pip
         versions if your package repository allows chunked responses (#4078).
       o Add  a pip check command to check installed packages dependencies (PR
         #3750).
       o Add option allowing user to abort  pip  operation  if  file/directory
         exists
       o Add Appveyor CI
       o Uninstall  existing packages when performing an editable installation
         of the same packages (#1548).
       o pip show is less  verbose  by  default.  --verbose  prints  multiline
         fields.  (PR #3858).
       o Add optional column formatting to pip list (#3651).
       o Add  --not-required option to pip list, which lists packages that are
         not dependencies of other packages.
       o Fix builds on systems with symlinked /tmp directory for custom builds
         such as numpy (PR #3701).
       o Fix regression in pip freeze: when there is more than one git remote,
         priority is given to the remote named origin (PR #3708, #3616).
       o Fix crash when calling pip freeze with invalid requirement  installed
         (PR #3704, #3681).
       o Allow multiple --requirement files in pip freeze (PR #3703).
       o Implementation  of  pep-503  data-requires-python. When this field is
         present for a  release  link,  pip  will  ignore  the  download  when
         installing to a Python version that doesn't satisfy the requirement.
       o pip  wheel now works on editable packages too (it was only working on
         editable dependencies before); this allows running pip wheel  on  the
         result  of pip freeze in presence of editable requirements (PR #3695,
         #3291).
       o Load credentials from .netrc files (PR #3715, #3569).
       o Add --platform, --python-version, --implementation and --abi  parame-
         ters  to  pip  download.  These allow utilities and advanced users to
         gather distributions for interpreters other than the one pip is being
         run on.  (PR #3760)
       o Skip  scanning  virtual  environments, even when venv/bin/python is a
         dangling symlink.
       o Added pip completion support for the fish shell.
       o Fix problems on Windows on Python 2 when username  or  hostname  con-
         tains non-ASCII characters (#3463, PR #3970, PR #4000).
       o Use  git  fetch  --tags  to fetch tags in addition to everything else
         that is normally fetched; this is necessary in case a git requirement
         url points to a tag or commit that is not on a branch (PR #3791)
       o Normalize package names before using in pip show (#3976)
       o Raise  when  Requires-Python do not match the running version and add
         --ignore-requires-python option as escape hatch (PR #3846).
       o Report the correct installed version when performing  an  upgrade  in
         some corner cases (#2382)
       o Add -i shorthand for --index flag in pip search
       o Do  not  optionally  load  C  dependencies in requests (#1840, #2930,
         #3024)
       o Strip authentication from SVN url prior to  passing  it  to  svn  (PR
         #3697, #3209).
       o Also install in platlib with --target option (PR #3694, #3682).
       o Restore  the  ability  to  use  inline comments in requirements files
         passed to pip freeze (#3680).
       8.1.2 (2016-05-10)
       o Fix a regression on systems with uninitialized locale (#3575).
       o Use environment markers to filter packages before  determining  if  a
         required wheel is supported. Solves (#3254).
       o Make glibc parsing for manylinux1 support more robust for the variety
         of glibc versions found in the wild (#3588).
       o Update environment marker support to fully support PEP 508 and legacy
         environment markers (#3624).
       o Always use debug logging to the --log file (#3351).
       o Don't  attempt  to  wrap search results for extremely narrow terminal
         windows (#3655).
       8.1.1 (2016-03-17)
       o Fix regression with non-ascii requirement files on Python 2  and  add
         support for encoding headers in requirement files (#3548, PR #3547).
       8.1.0 (2016-03-05)
       o Implement  PEP  513,  which  adds support for the manylinux1 platform
         tag, allowing carefully compiled binary wheels  to  be  installed  on
         compatible Linux platforms.
       o Allow  wheels  which  are  not specific to a particular Python inter-
         preter but which are specific to a particular platform (#3202).
       o Fixed an issue where call_subprocess  would  crash  trying  to  print
         debug data on child process failure (#3521, PR #3522).
       o Exclude  the  wheel  package from the pip freeze output (like pip and
         setuptools).  #2989.
       o Allow installing modules from a subdirectory of a vcs  repository  in
         non-editable mode (#3217, PR #3466).
       o Make  pip wheel and pip download work with vcs urls with subdirectory
         option (PR #3466).
       o Show classifiers in pip show.
       o Show PEP376 Installer in pip show (#3517).
       o Unhide completion command (PR #1810).
       o Show latest version number in pip search results (PR #1415).
       o Decode requirement files according to their BOM if present (PR #3485,
         #2865).
       o Fix  and deprecate package name detection from url path (#3523 and PR
         #3495).
       o Correct the behavior where interpreter specific tags (such  as  cp34)
         were  being used on later versions of the same interpreter instead of
         only for that specific interpreter (#3472).
       o Fix an issue where pip would erroneously install a 64 bit wheel on  a
         32 bit Python running on a 64 bit macOS machine.
       o Do not assume that all git repositories have an origin remote.
       o Correctly  display  the  line to add to a requirements.txt for an URL
         based dependency when --require-hashes is enabled.
       8.0.3 (2016-02-25)
       o Make install --quiet really quiet. See #3418.
       o Fix a bug when removing packages in python 3: disable INI-style pars-
         ing  of  the  entry_point.txt  file  to  allow entry point names with
         colons (PR #3434)
       o Normalize generated script files path in RECORD files. (PR #3448)
       o Fix bug introduced in 8.0.0 where subcommand output  was  not  shown,
         even when the user specified -v / --verbose. #3486.
       o Enable python -W with respect to PipDeprecationWarning. (PR #3455)
       o Upgrade distlib to 0.2.2 (fix #3467):
         o Improved  support  for  Jython  when  quoting executables in output
           scripts.
       o Add a --all option to pip freeze to include usually  skipped  package
         (like pip, setuptools and wheel) to the freeze output. #1610.
       8.0.2 (2016-01-21)
       o Stop  attempting  to  trust  the  system  CA trust store because it's
         extremely common for them to be broken, often in  incompatible  ways.
         See PR #3416.
       8.0.1 (2016-01-21)
       o Detect CAPaths in addition to CAFiles on platforms that provide them.
       o Installing  argparse  or  wsgiref  will no longer warn or error - pip
         will allow the installation even though it may be useless (since  the
         installed thing will be shadowed by the standard library).
       o Upgrading  a  distutils installed item that is installed outside of a
         virtual environment, while inside of a virtual  environment  will  no
         longer warn or error.
       o Fix  a  bug where pre-releases were showing up in pip list --outdated
         without the --pre flag.
       o Switch the SOABI emulation from using RuntimeWarnings to  debug  log-
         ging.
       o Rollback  the removal of the ability to uninstall distutils installed
         items until a future date.
       8.0.0 (2016-01-19)
       o BACKWARD INCOMPATIBLE Drop support for Python 3.2.
       o BACKWARD INCOMPATIBLE Remove the ability to find any files other than
         the ones directly linked from the index or find-links pages.
       o BACKWARD INCOMPATIBLE Remove the --download-cache which had been dep-
         recated and no-op'd in 6.0.
       o BACKWARD INCOMPATIBLE Remove the --log-explicit-levels which had been
         deprecated in 6.0.
       o BACKWARD  INCOMPATIBLE Change pip wheel --wheel-dir default path from
         <cwd>/wheelhouse to <cwd>.
       o Deprecate and no-op the --allow-external,  --allow-all-external,  and
         --allow-unverified  functionality  that was added as part of PEP 438.
         With changes made to the repository protocol made in PEP  470,  these
         options are no longer functional.
       o Allow --trusted-host within a requirements file. #2822.
       o Allow --process-dependency-links within a requirements file. #1274.
       o Allow --pre within a requirements file. #1273.
       o Allow  repository  URLs  with  secure transports to count as trusted.
         (E.g., "git+ssh" is okay.) #2811.
       o Implement a top-level pip download command and deprecate pip  install
         --download.
       o Fixed #3141, when uninstalling, look for the case of paths containing
         symlinked directories (PR #3154)
       o When installing, if building a wheel fails, clear up the build direc-
         tory before falling back to a source install. #3047.
       o Fix  user  directory expansion when HOME=/. Workaround for Python bug
         http://bugs.python.org/issue14768, reported in #2996.
       o Fixed #3009, correct reporting of requirements file line numbers  (PR
         #3125)
       o Fixed  #1062, Exception(IOError) for pip freeze and pip list commands
         with subversion >= 1.7. (PR #3346)
       o Provide a spinner showing that progress is happening when  installing
         or building a package via setup.py. This will alleviate concerns that
         projects with unusually long build times have with pip  appearing  to
         stall.
       o Include  the  functionality  of  peep into pip, allowing hashes to be
         baked into a requirements file and ensuring that the  packages  being
         downloaded  match  one of those hashes. This is an additional, opt-in
         security measure that, when used,  removes  the  need  to  trust  the
         repository.
       o Fix  a  bug causing pip to not select a wheel compiled against an OSX
         SDK later than what Python itself was compiled against  when  running
         on a newer version of OSX.
       o Add  a  new  --prefix option for pip install that supports wheels and
         sdists. (PR #3252)
       o Fixed #2042 regarding wheel building with setup.py using a  different
         encoding than the system.
       o Drop PasteScript specific egg_info hack. (PR #3270)
       o Allow   combination  of  pip  list  options  --editable  with  --out-
         dated/--uptodate.  (#933)
       o Gives VCS implementations control over saying whether  a  project  is
         under their control (PR #3258)
       o Git detection now works when setup.py is not at the Git repo root and
         when package_dir is used, so pip  freeze  works  in  more  cases  (PR
         #3258)
       o Correctly  freeze  Git develop packages in presence of the &subdirec-
         tory option (PR #3258)
       o The detection of editable packages now  relies  on  the  presence  of
         .egg-link  instead of looking for a VCS, so pip list -e is more reli-
         able (PR #3258)
       o Add the --prefix flag to pip install which allows specifying  a  root
         prefix to use instead of sys.prefix (PR #3252).
       o Allow  duplicate specifications in the case that only the extras dif-
         fer, and union all specified extras together (PR #3198).
       o Fix the detection of the user's current platform on OSX  when  deter-
         mining the OSX SDK version (PR #3232).
       o Prevent  the  automatically  built  wheels from mistakenly being used
         across multiple versions of Python when they  may  not  be  correctly
         configured  for  that by making the wheel specific to a specific ver-
         sion of Python and specific interpreter (PR #3225).
       o Emulate the SOABI support in wheels from Python 2.x on Python 2.x  as
         closely  as  we  can with the information available within the inter-
         preter (PR #3075).
       o Don't roundtrip to the network when git is pinned to a specific  com-
         mit hash and that hash already exists locally (PR #3066).
       o Prefer  wheels  built  against a newer SDK to wheels built against an
         older SDK on OSX (PR #3163).
       o Show entry points for projects installed via wheel (PR #3122).
       o Improve message when an unexisting path  is  passed  to  --find-links
         option (#2968).
       o pip freeze does not add the VCS branch/tag name in the #egg=... frag-
         ment anymore (PR #3312).
       o Warn on installation of editable if the provided #egg=name part  does
         not match the metadata produced by setup.py egg_info. #3143.
       o Add  support  for  .xz  files for python versions supporting them (>=
         3.3).  #722.
       7.1.2 (2015-08-22)
       o Don't raise an error if pip is not installed when  checking  for  the
         latest pip version.
       7.1.1 (2015-08-20)
       o Check that the wheel cache directory is writable before we attempt to
         write cached files to them.
       o Move the pip version check until after any installs  have  been  per-
         formed, thus removing the extraneous warning when upgrading pip.
       o Added debug logging when using a cached wheel.
       o Respect  platlib  by default on platforms that have it separated from
         purelib.
       o Upgrade packaging to 15.3.
         o Normalize post-release spellings for rev/r prefixes.
       o Upgrade distlib to 0.2.1.
         o Updated launchers to  decode  shebangs  using  UTF-8.  This  allows
           non-ASCII pathnames to be correctly handled.
         o Ensured that the executable written to shebangs is normcased.
         o Changed ScriptMaker to work better under Jython.
       o Upgrade ipaddress to 1.0.13.
       7.1.0 (2015-06-30)
       o Allow  constraining  versions globally without having to know exactly
         what will be installed by the pip command. #2731.
       o Accept --no-binary and --only-binary via pip.conf. #2867.
       o Allow --allow-all-external within a requirements file.
       o Fixed an issue where --user could not be used when --prefix was  used
         in a distutils configuration file.
       o Fixed  an  issue where the SOABI tags were not correctly being gener-
         ated on Python 3.5.
       o Fixed an issue where we were advising windows  users  to  upgrade  by
         directly executing pip, when that would always fail on Windows.
       o Allow ~ to be expanded within a cache directory in all situations.
       7.0.3 (2015-06-01)
       o Fixed  a  regression  where  --no-cache-dir would raise an exception,
         fixes #2855.
       7.0.2 (2015-06-01)
       o BACKWARD INCOMPATIBLE Revert the change  (released  in  v7.0.0)  that
         required  quoting  in requirements files around specifiers containing
         environment markers. (PR #2841)
       o BACKWARD INCOMPATIBLE Revert the accidental introduction  of  support
         for  options interleaved with requirements, version specifiers etc in
         requirements files. (PR #2841)
       o Expand ~ in the cache directory when caching wheels, fixes #2816.
       o Use python -m pip instead of pip when recommending an upgrade command
         to Windows users.
       7.0.1 (2015-05-22)
       o Don't  build  and  cache  wheels  for non-editable installations from
         VCSs.
       o Allow --allow-all-external inside of a requirements.txt file,  fixing
         a regression in 7.0.
       7.0.0 (2015-05-21)
       o BACKWARD INCOMPATIBLE Removed the deprecated --mirror, --use-mirrors,
         and -M options.
       o BACKWARD INCOMPATIBLE Removed the deprecated zip and unzip commands.
       o BACKWARD  INCOMPATIBLE  Removed  the  deprecated   --no-install   and
         --no-download options.
       o BACKWARD INCOMPATIBLE No longer implicitly support an insecure origin
         origin, and instead require insecure origins  be  explicitly  trusted
         with the --trusted-host option.
       o BACKWARD  INCOMPATIBLE  Removed  the  deprecated  link  scraping that
         attempted to parse HTML comments for a specially formatted comment.
       o BACKWARD INCOMPATIBLE Requirements in requirements  files  containing
         markers  must now be quoted due to parser changes from (PR #2697) and
         (PR #2725).  For example, use "SomeProject; python_version <  '2.7'",
         not simply SomeProject; python_version < '2.7'
       o get-pip.py  now  installs  the "wheel" package, when it's not already
         installed (PR #2800).
       o Ignores bz2 archives if Python  wasn't  compiled  with  bz2  support.
         Fixes #497
       o Support  --install-option  and  --global-option  per  requirement  in
         requirement files (PR #2537)
       o Build Wheels prior to installing from sdist, caching them in the  pip
         cache directory to speed up subsequent installs. (PR #2618)
       o Allow  fine grained control over the use of wheels and source builds.
         (PR #2699)
       o --no-use-wheel and  --use-wheel  are  deprecated  in  favour  of  new
         options    --no-binary   and   --only-binary.   The   equivalent   of
         --no-use-wheel is --no-binary=:all:. (PR #2699)
       o The use of --install-option, --global-option or  --build-option  dis-
         able  the  use  of wheels, and the autobuilding of wheels. (PR #2711)
         Fixes #2677
       o Improve logging when a requirement marker doesn't match your environ-
         ment (PR #2735)
       o Removed the temporary modifications (that began in pip v1.4 when dis-
         tribute and setuptools merged) that allowed distribute to be  consid-
         ered  a  conflict  to  setuptools.  pip install -U setuptools will no
         longer  upgrade  "distribute"  to  "setuptools".   Instead,  use  pip
         install -U distribute (PR #2767).
       o Only  display  a  warning to upgrade pip when the newest version is a
         final release and it is not a post release of the version we  already
         have installed (PR #2766).
       o Display  a  warning  when attempting to access a repository that uses
         HTTPS when we don't have Python compiled with SSL support (PR #2761).
       o Allowing using extras  when  installing  from  a  file  path  without
         requiring the use of an editable (PR #2785).
       o Fix  an  infinite  loop  when the cache directory is stored on a file
         system which does not support hard links (PR #2796).
       o Remove the implicit debug log that was written on  every  invocation,
         instead  users  will  need  to use --log if they wish to have one (PR
         #2798).
       6.1.1 (2015-04-07)
       o No longer ignore dependencies which have been added to  the  standard
         library, instead continue to install them.
       6.1.0 (2015-04-07)
       o Fixes #2502. Upgrades were failing when no potential links were found
         for dependencies other than the current installation. (PR #2538)
       o Use a smoother progress bar when the terminal is capable of  handling
         it, otherwise fallback to the original ASCII based progress bar.
       o Display  much  less output when pip install succeeds, because on suc-
         cess, users probably don't care about all the nitty gritty details of
         compiling  and installing. When pip install fails, display the failed
         install output once instead of twice, because  once  is  enough.  (PR
         #2487)
       o Upgrade the bundled copy of requests to 2.6.0, fixing CVE-2015-2296.
       o Display format of latest package when using pip list --outdated.  (PR
         #2475)
       o Don't use pywin32 as ctypes should always be  available  on  Windows,
         using  pywin32  prevented  uninstallation  of pywin32 on Windows. (PR
         #2467)
       o Normalize the --wheel-dir option, expanding out constructs such as  ~
         when used (PR #2441).
       o Display  a  warning  when  an undefined extra has been requested. (PR
         #2142)
       o Speed up installing a directory in certain cases by creating a  sdist
         instead of copying the entire directory. (PR #2535)
       o Don't follow symlinks when uninstalling files (PR #2552)
       o Upgrade  the  bundled  copy  of  cachecontrol  from 0.11.1 to 0.11.2.
         Fixes #2481 (PR #2595)
       o Attempt to more smartly choose the order of installation to  try  and
         install  dependencies  before  the  projects that depend on them. (PR
         #2616)
       o Skip trying to install libraries  which  are  part  of  the  standard
         library.  (PR #2636, PR #2602)
       o Support  arch  specific wheels that are not tied to a specific Python
         ABI.  (PR #2561)
       o Output warnings and errors to stderr instead of stdout. (PR #2543)
       o Adjust the cache dir file checks  to  only  check  ownership  if  the
         effective user is root. (PR #2396)
       o Install  headers  into a per project name directory instead of all of
         them into the root directory when inside of a virtual environment. (-
         PR #2421)
       6.0.8 (2015-02-04)
       o Fix  an  issue where the --download flag would cause pip to no longer
         use randomized build directories.
       o Fix an issue where pip did not properly  unquote  quoted  URLs  which
         contain characters like PEP 440's epoch separator (!).
       o Fix  an  issue  where  distutils installed projects were not actually
         uninstalled and deprecate attempting to uninstall them altogether.
       o Retry deleting directories in case a process  like  an  antivirus  is
         holding the directory open temporarily.
       o Fix an issue where pip would hide the cursor on Windows but would not
         reshow it.
       6.0.7 (2015-01-28)
       o Fix a regression where Numpy requires a build path  without  symlinks
         to properly build.
       o Fix  a  broken  log message when running pip wheel without a require-
         ment.
       o Don't mask network errors while downloading the file as a hash  fail-
         ure.
       o Properly  create  the state file for the pip version check so it only
         happens once a week.
       o Fix an issue where switching between Python  3  and  Python  2  would
         evict cached items.
       o Fix  a regression where pip would be unable to successfully uninstall
         a project without a normalized version.
       6.0.6 (2015-01-03)
       o Continue the regression fix from 6.0.5 which was not a complete fix.
       6.0.5 (2015-01-03)
       o Fix a regression with 6.0.4 under Windows where most  commands  would
         raise  an  exception due to Windows not having the os.geteuid() func-
         tion.
       6.0.4 (2015-01-03)
       o Fix an issue where ANSI escape codes would be used  on  Windows  even
         though  the  Windows shell does not support them, causing odd charac-
         ters to appear with the progress bar.
       o Fix an issue where using -v would cause an exception  saying  TypeEr-
         ror: not all arguments converted during string formatting.
       o Fix  an  issue  where  using  -v with dependency links would cause an
         exception saying TypeError:  'InstallationCandidate'  object  is  not
         iterable.
       o Fix an issue where upgrading distribute would cause an exception say-
         ing TypeError: expected string or buffer.
       o Show a warning and disable the use of the cache  directory  when  the
         cache  directory is not owned by the current user, commonly caused by
         using sudo without the -H flag.
       o Update PEP 440 support to handle the latest changes to PEP 440,  par-
         ticularly  the  changes  to  >V  and  <V so that they no longer imply
         !=V.*.
       o Document the default cache directories for each operating system.
       o Create the cache directory when the pip version check needs  to  save
         to it instead of silently logging an error.
       o Fix  a  regression  where the -q flag would not properly suppress the
         display of the progress bars.
       6.0.3 (2014-12-23)
       o Fix an issue where the implicit version check new in  pip  6.0  could
         cause pip to block for up to 75 seconds if PyPI was not accessible.
       o Make --no-index imply --disable-pip-version-check.
       6.0.2 (2014-12-23)
       o Fix  an  issue  where  the output saying that a package was installed
         would report the old version instead of the  new  version  during  an
         upgrade.
       o Fix left over merge conflict markers in the documentation.
       o Document  the  backwards  incompatible  PEP  440  change in the 6.0.0
         changelog.
       6.0.1 (2014-12-22)
       o Fix executable file permissions for Wheel files when using the distu-
         tils scripts option.
       o Fix  a  confusing error message when an exceptions was raised at cer-
         tain points in pip's execution.
       o Fix the missing list of versions when a version cannot be found  that
         matches the specifiers.
       o Add  a warning about the possibly problematic use of > when the given
         specifier doesn't match anything.
       o Fix an issue where installing from a directory would  not  copy  over
         certain  directories  which  were  being excluded, however some build
         systems rely on them.
       6.0 (2014-12-22)
       o PROCESS Version numbers are now simply X.Y where the  leading  1  has
         been dropped.
       o BACKWARD INCOMPATIBLE Dropped support for Python 3.1.
       o BACKWARD INCOMPATIBLE Removed the bundle support which was deprecated
         in 1.4. (PR #1806)
       o BACKWARD INCOMPATIBLE File lists generated by pip  show  -f  are  now
         rooted  at  the location reported by show, rather than one (unstated)
         directory lower. (PR #1933)
       o BACKWARD INCOMPATIBLE The ability to install files over the FTP  pro-
         tocol was accidentally lost in pip 1.5 and it has now been decided to
         not restore that ability.
       o BACKWARD INCOMPATIBLE PEP 440 is now fully  implemented,  this  means
         that  in  some cases versions will sort differently or version speci-
         fiers will be interpreted differently  than  previously.  The  common
         cases should all function similarly to before.
       o DEPRECATION  pip  install  --download-cache  and  pip  wheel  --down-
         load-cache command line flags have been deprecated and the  function-
         ality  removed.  Since pip now automatically configures and uses it's
         internal HTTP cache which supplants the --download-cache the existing
         options  have  been  made  non  functional but will still be accepted
         until their removal in pip v8.0.  For  more  information  please  see
         https://pip.pypa.io/en/stable/reference/pip_install.html#caching
       o DEPRECATION  pip  install  --build and pip install --no-clean are now
         NOT deprecated.  This  reverses  the  deprecation  that  occurred  in
         v1.5.3. See #906 for discussion.
       o DEPRECATION  Implicitly accessing URLs which point to an origin which
         is not a secure origin, instead requiring an  opt-in  for  each  host
         using  the  new --trusted-host flag (pip install --trusted-host exam-
         ple.com foo).
       o Allow the new --trusted-host flag to also  disable  TLS  verification
         for a particular hostname.
       o Added a --user flag to pip freeze and pip list to check the user site
         directory only.
       o Fixed #1873. Silence byte compile errors when installation succeed.
       o Added a virtualenv-specific configuration file. (PR #1364)
       o Added site-wide configuration files. (PR #1978)
       o Added an automatic check to warn if there is an  updated  version  of
         pip available (PR #2049).
       o wsgiref  and  argparse (for >py26) are now excluded from pip list and
         pip freeze (PR #1606, PR #1369)
       o Fixed #1424. Add --client-cert option for SSL client certificates.
       o Fixed #1484. pip show --files was  broken  for  wheel  installs.  (PR
         #1635)
       o Fixed  #1641.  install_lib should take precedence when reading distu-
         tils config.  (PR #1642)
       o Send Accept-Encoding: identity when downloading files in  an  attempt
         to  convince  some servers who double compress the downloaded file to
         stop doing so. (PR #1688)
       o Fixed #1559. Stop breaking when given pip commands in  uppercase  (PR
         #1725)
       o Fixed  #1618.  Pip  no longer adds duplicate logging consumers, so it
         won't create duplicate output when being called multiple  times.  (PR
         #1723)
       o Fixed  #1769.  pip wheel now returns an error code if any wheels fail
         to build.
       o Fixed #1775. pip wheel wasn't building  wheels  for  dependencies  of
         editable requirements.
       o Allow  the  use  of  --no-use-wheel  within  a requirements file. (PR
         #1859)
       o Fixed #1680. Attempt to locate system TLS certificates to use instead
         of the included CA Bundle if possible. (PR #1866)
       o Fixed  #1319.  Allow  use  of Zip64 extension in Wheels and other zip
         files. (PR #1868)
       o Fixed #1101. Properly handle an index or  --find-links  target  which
         has a <base> without a href attribute. (PR #1869)
       o Fixed  #1885.  Properly handle extras when a project is installed via
         Wheel. (PR #1896)
       o Fixed #1180. Added support to respect proxies in pip search. It  also
         fixes #932 and #1104. (PR #1902)
       o Fixed  #798  and  #1060. pip install --download works with vcs links.
         (PR #1926)
       o Fixed #1456. Disabled warning about insecure index  host  when  using
         localhost.  Based off of Guy Rozendorn's work in PR #1718. (PR #1967)
       o Allow the use of OS standard user configuration files instead of ones
         simply based around $HOME. (PR #2021)
       o Fixed #1825. When installing directly from wheel paths or urls,  pre-
         vious  versions  were  not uninstalled. This also fixes #804 specifi-
         cally for the case of wheel archives. (PR #1838)
       o Fixed #2075, detect the location of the .egg-info directory by  look-
         ing  for  any  file  located  inside  of it instead of relying on the
         record file listing a directory. (PR #2076)
       o Fixed #1964, #1935, #676, Use a randomized and secure  default  build
         directory when possible. (PR #2122, CVE-2014-8991)
       o Fixed  #1433.  Support environment markers in requirements.txt files.
         (PR #2134)
       o Automatically retry failed HTTP requests by default.  (PR  #1444,  PR
         #2147)
       o Fixed #1100 - Handle HTML Encoding better using a method that is more
         similar to how browsers handle it. (PR #1874)
       o Reduce the verbosity of the pip command by  default.  (PR  #2175,  PR
         #2177, PR #2178)
       o Fixed  #2031  -  Respect  sys.executable  on OSX when installing from
         Wheels.
       o Display the entire URL of the file  that  is  being  downloaded  when
         downloading from a non PyPI repository (PR #2183).
       o Support setuptools style environment markers in a source distribution
         (PR #2153).
       1.5.6 (2014-05-16)
       o Upgrade requests to 2.3.0 to fix an  issue  with  proxies  on  Python
         3.4.1 (PR #1821).
       1.5.5 (2014-05-03)
       o Fixes  #1632.   Uninstall  issues  on  debianized  pypy, specifically
         issues with setuptools upgrades. (PR #1743)
       o Update documentation to point at https://bootstrap.pypa.io/get-pip.py
         for bootstrapping pip.
       o Update docs to point to https://pip.pypa.io/
       o Upgrade   the   bundled  projects  (distlib==0.1.8,  html5lib==1.0b3,
         six==1.6.1, colorama==0.3.1, setuptools==3.4.4).
       1.5.4 (2014-02-21)
       o Correct deprecation warning for pip install --build  to  only  notify
         when the --build value is different than the default.
       1.5.3 (2014-02-20)
       o DEPRECATION  pip  install  --build and pip install --no-clean are now
         deprecated.  See #906 for discussion.
       o Fixed #1112. Couldn't download directly from  wheel  paths/urls,  and
         when  wheel  downloads did occur using requirement specifiers, depen-
         dencies weren't downloaded (PR #1527)
       o Fixed #1320. pip  wheel  was  not  downloading  wheels  that  already
         existed (PR #1524)
       o Fixed   #1111.   pip  install  --download  was  failing  using  local
         --find-links (PR #1524)
       o Workaround  for  Python  bug  http://bugs.python.org/issue20053   (PR
         #1544)
       o Don't pass a unicode __file__ to setup.py on Python 2.x (PR #1583)
       o Verify that the Wheel version is compatible with this pip (PR #1569)
       1.5.2 (2014-01-26)
       o Upgraded the vendored pkg_resources and _markerlib to setuptools 2.1.
       o Fixed   an  error  that  prevented  accessing  PyPI  when  pyopenssl,
         ndg-httpsclient, and pyasn1 are installed
       o Fixed an issue  that  caused  trailing  comments  to  be  incorrectly
         included as part of the URL in a requirements file
       1.5.1 (2014-01-20)
       o pip  now only requires setuptools (any setuptools, not a certain ver-
         sion) when installing distributions from src (i.e. not  from  wheel).
         (PR #1434).
       o get-pip.py  now  installs setuptools, when it's not already installed
         (PR #1475)
       o Don't decode downloaded files that have  a  Content-Encoding  header.
         (PR #1435)
       o Fix  to  correctly  parse wheel filenames with single digit versions.
         (PR #1445)
       o If --allow-unverified is used assume it also means  --allow-external.
         (PR #1457)
       1.5 (2014-01-01)
       o BACKWARD  INCOMPATIBLE  pip no longer supports the --use-mirrors, -M,
         and --mirrors flags. The mirroring support has been removed. In order
         to  use  a  mirror  specify  it  as  the  primary  index  with  -i or
         --index-url, or as an additional index  with  --extra-index-url.  (PR
         #1098, CVE-2013-5123)
       o BACKWARD  INCOMPATIBLE  pip  no  longer will scrape insecure external
         urls by default nor  will  it  install  externally  hosted  files  by
         default.  Users may opt into installing externally hosted or insecure
         files or urls using --allow-external PROJECT  and  --allow-unverified
         PROJECT. (PR #1055)
       o BACKWARD  INCOMPATIBLE  pip  no  longer  respects dependency links by
         default.   Users  may  opt   into   respecting   them   again   using
         --process-dependency-links.
       o DEPRECATION  pip  install  --no-install and pip install --no-download
         are now formally deprecated.  See #906  for  discussion  on  possible
         alternatives, or lack thereof, in future releases.
       o DEPRECATION pip zip and pip unzip are now formally deprecated.
       o pip will now install Mac OSX platform wheels from PyPI. (PR #1278)
       o pip  now  generates the appropriate platform-specific console scripts
         when installing wheels. (PR #1251)
       o Pip now confirms a wheel is supported when installing directly from a
         path or url. (PR #1315)
       o Fixed  #1097, --ignore-installed now behaves again as designed, after
         it was unintentionally broke in v0.8.3 when fixing #14 (PR #1352).
       o Fixed a bug where global scripts were being removed when uninstalling
         --user installed packages (PR #1353).
       o Fixed  #1163,  --user  wasn't being respected when installing scripts
         from wheels (PR #1176).
       o Fixed #1150, we now assume '_' means '-' in versions from wheel file-
         names (PR #1158).
       o Fixed #219, error when using --log with a failed install (PR #1205).
       o Fixed #1131, logging was buffered and choppy in Python 3.
       o Fixed #70,  --timeout was being ignored (PR #1202).
       o Fixed #772, error when setting PIP_EXISTS_ACTION (PR #1201).
       o Added  colors  to  the  logging  output in order to draw attention to
         important warnings and errors. (PR #1109)
       o Added warnings when using an insecure index, find-link, or dependency
         link. (PR #1121)
       o Added  support  for installing packages from a subdirectory using the
         subdirectory editable option. ( PR #1082 )
       o Fixed #1192. "TypeError: bad operand type for unary"  in  some  cases
         when installing wheels using --find-links (PR #1218).
       o Fixed  #1133 and #317. Archive contents are now written based on sys-
         tem defaults and umask (i.e. permissions are not  preserved),  except
         that  regular  files with any execute permissions have the equivalent
         of "chmod +x" applied after being written (PR #1146).
       o PreviousBuildDirError now returns a non-zero exit code  and  prevents
         the previous build dir from being cleaned in all cases (PR #1162).
       o Renamed  --allow-insecure to --allow-unverified, however the old name
         will continue to work for a period of time (PR #1257).
       o Fixed #1006, error when installing local projects  with  symlinks  in
         Python 3. (PR #1311)
       o The  previously  hidden  --log-file option, is now shown as a general
         option.  (PR #1316)
       1.4.1 (2013-08-07)
       o New Signing Key Release 1.4.1 is using a different  key  than  normal
         with fingerprint: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA
       o Fixed issues with installing from pybundle files (PR #1116).
       o Fixed error when sysconfig module throws an exception (PR #1095).
       o Don't ignore already installed pre-releases (PR #1076).
       o Fixes related to upgrading setuptools (PR #1092).
       o Fixes so that --download works with wheel archives (PR #1113).
       o Fixes  related  to  recognizing  and  cleaning  global build dirs (PR
         #1080).
       1.4 (2013-07-23)
       o BACKWARD INCOMPATIBLE  pip  now  only  installs  stable  versions  by
         default,  and  offers a new --pre option to also find pre-release and
         development versions. (PR #834)
       o BACKWARD INCOMPATIBLE Dropped support for  Python  2.5.  The  minimum
         supported Python version for pip 1.4 is Python 2.6.
       o Added  support  for  installing  and building wheel archives.  Thanks
         Daniel Holth, Marcus Smith, Paul Moore, and Michele Lacchia (PR #845)
       o Applied security patch to pip's ssl support  related  to  certificate
         DNS wildcard matching (http://bugs.python.org/issue17980).
       o To  satisfy  pip's  setuptools requirement, pip now recommends setup-
         tools>=0.8, not distribute. setuptools and distribute are now  merged
         into one project called 'setuptools'. (PR #1003)
       o pip will now warn when installing a file that is either hosted exter-
         nally to the index or cannot be verified with a hash. In  the  future
         pip  will  default  to not installing them and will require the flags
         --allow-external NAME, and --allow-insecure  NAME  respectively.  (PR
         #985)
       o If  an  already-downloaded or cached file has a bad hash, re-download
         it rather than erroring out. (#963).
       o pip bundle and support for installing from pybundle files is now con-
         sidered deprecated and will be removed in pip v1.5.
       o Fixed  a  number of issues (#413, #709, #634, #602, and #939) related
         to cleaning up and not reusing build directories. (PR #865, #948)
       o Added a User Agent so that pip is identifiable in logs. (PR #901)
       o Added ssl  and  --user  support  to  get-pip.py.  Thanks  Gabriel  de
         Perthuis.  (PR #895)
       o Fixed the proxy support, which was broken in pip 1.3.x (PR #840)
       o Fixed  #32 - pip fails when server does not send content-type header.
         Thanks Hugo Lopes Tavares and Kelsey Hightower (PR #872).
       o "Vendorized"       distlib       as       pip.vendor.distlib       (-
         https://distlib.readthedocs.io/).
       o Fixed git VCS backend with git 1.8.3. (PR #967)
       1.3.1 (2013-03-08)
       o Fixed  a major backward incompatible change of parsing URLs to exter-
         nally hosted packages that got accidentally included in 1.3.
       1.3 (2013-03-07)
       o SSL Cert Verification;  Make  https  the  default  for  PyPI  access.
         Thanks  James  Cleveland, Giovanni Bajo, Marcus Smith and many others
         (PR #791, CVE-2013-1629).
       o Added "pip list" for listing installed packages and the  latest  ver-
         sion  available. Thanks Rafael Caricio, Miguel Araujo, Dmitry Gladkov
         (PR #752)
       o Fixed security issues with  pip's  use  of  temp  build  directories.
         Thanks David (d1b) and Thomas Guttler. (PR #780, CVE-2013-1888)
       o Improvements to sphinx docs and cli help. (PR #773)
       o Fixed  #707,  dealing with macOS temp dir handling, which was causing
         global NumPy installs to fail. (PR #768)
       o Split help output into general  vs  command-specific  option  groups.
         Thanks Georgi Valkov. (PR #744; PR #721 contains preceding refactor)
       o Fixed dependency resolution when installing from archives with upper-
         case project names. (PR #724)
       o Fixed problem where re-installs always occurred  when  using  file://
         find-links.  (Pulls #683/#702)
       o "pip  install  -v"  now shows the full download url, not just the ar-
         chive name.  Thanks Marc Abramowitz (PR #687)
       o Fix to prevent unnecessary PyPI redirects. Thanks Alex  Gronholm  (PR
         #695)
       o Fixed  #670 - install failure under Python 3 when the same version of
         a package is found under 2 different URLs.   Thanks  Paul  Moore  (PR
         #671)
       o Fix  git  submodule  recursive  updates.   Thanks Roey Berman. (Pulls
         #674)
       o Explicitly ignore rel='download' links while looking for html  pages.
         Thanks Maxime R. (PR #677)
       o --user/--upgrade  install  options  now work together. Thanks 'eevee'
         for discovering the problem. (PR #705)
       o Added check in install --download to prevent  re-downloading  if  the
         target file already exists. Thanks Andrey Bulgakov. (PR #669)
       o Added  support  for bare paths (including relative paths) as argument
         to --find-links. Thanks Paul Moore for draft patch.
       o Added support for --no-index in requirements files.
       o Added "pip show" command to get information about an installed  pack-
         age.  Fixes #131. Thanks Kelsey Hightower and Rafael Caricio.
       o Added  --root  option  for  "pip  install" to specify root directory.
         Behaves like the same option in distutils but also  plays  nice  with
         pip's egg-info.  Thanks Przemek Wrzos.  (#253 / PR #693)
       1.2.1 (2012-09-06)
       o Fixed  a regression introduced in 1.2 about raising an exception when
         not finding any files to uninstall in the current environment. Thanks
         for the fix, Marcus Smith.
       1.2 (2012-09-01)
       o Dropped  support  for Python 2.4 The minimum supported Python version
         is now Python 2.5.
       o Fixed #605 - pypi mirror support broken on some DNS responses. Thanks
         philwhin.
       o Fixed  #355  -  pip uninstall removes files it didn't install. Thanks
         pjdelport.
       o Fixed issues #493, #494, #440, and #573 related to improving  support
         for the user installation scheme. Thanks Marcus Smith.
       o Write  failure  log to temp file if default location is not writable.
         Thanks andreigc.
       o Pull in submodules for git editable checkouts. Fixes #289  and  #421.
         Thanks Hsiaoming Yang and Markus Hametner.
       o Use  a temporary directory as the default build location outside of a
         virtualenv. Fixes issues #339 and #381. Thanks Ben Rosser.
       o Added support for specifying extras with local editables. Thanks Nick
         Stenning.
       o Added  --egg flag to request egg-style rather than flat installation.
         Refs #3. Thanks Kamal Bin Mustafa.
       o Fixed #510 - prevent e.g. gmpy2-2.0.tar.gz from matching a request to
         pip  install  gmpy;  sdist filename must begin with full project name
         followed by a dash. Thanks casevh for the report.
       o Fixed #504 - allow package  URLS  to  have  querystrings.  Thanks  W.
         Trevor King.
       o Fixed  #58  - pip freeze now falls back to non-editable format rather
         than blowing up if it can't determine the  origin  repository  of  an
         editable.  Thanks Rory McCann.
       o Added  a  __main__.py file to enable python -m pip on Python versions
         that support it. Thanks Alexey Luchko.
       o Fixed #487 - upgrade from VCS url  of  project  that  does  exist  on
         index. Thanks Andrew Knapp for the report.
       o Fixed #486 - fix upgrade from VCS url of project with no distribution
         on index.  Thanks Andrew Knapp for the report.
       o Fixed #427 - clearer error message on a  malformed  VCS  url.  Thanks
         Thomas Fenzl.
       o Added  support for using any of the built in guaranteed algorithms in
         hashlib as a checksum hash.
       o Fixed #321 - Raise an exception if current working directory can't be
         found or accessed.
       o Fixed  #82 - Removed special casing of the user directory and use the
         Python default instead.
       o Fixed #436 - Only warn about version conflicts if there  is  actually
         one.  This re-enables using ==dev in requirements files.
       o Moved tests to be run on Travis CI: http://travis-ci.org/pypa/pip
       o Added a better help formatter.
       1.1 (2012-02-16)
       o Fixed  #326  -  don't crash when a package's setup.py emits UTF-8 and
         then fails. Thanks Marc Abramowitz.
       o Added --target option for installing directly to arbitrary directory.
         Thanks Stavros Korokithakis.
       o Added support for authentication with Subversion repositories. Thanks
         Qiangning Hong.
       o Fixed #315 - --download now downloads dependencies as  well.   Thanks
         Qiangning Hong.
       o Errors  from subprocesses will display the current working directory.
         Thanks Antti Kaihola.
       o Fixed #369 - compatibility  with  Subversion  1.7.  Thanks  Qiangning
         Hong.  Note that setuptools remains incompatible with Subversion 1.7;
         to get the benefits of pip's support you must use  Distribute  rather
         than setuptools.
       o Fixed  #57  - ignore py2app-generated macOS mpkg zip files in finder.
         Thanks Rene Dudfield.
       o Fixed #182 - log to ~/Library/Logs/ by  default  on  macOS  framework
         installs. Thanks Dan Callahan for report and patch.
       o Fixed #310 - understand version tags without minor version ("py3") in
         sdist filenames. Thanks Stuart Andrews for report and Olivier  Girar-
         dot for patch.
       o Fixed #7 - Pip now supports optionally installing setuptools "extras"
         dependencies; e.g. "pip install Paste[openid]". Thanks Matt Maker and
         Olivier Girardot.
       o Fixed  #391  -  freeze  no  longer  borks  on requirements files with
         --index-url or --find-links. Thanks Herbert Pfennig.
       o Fixed #288 - handle symlinks properly. Thanks lebedov for the patch.
       o Fixed #49 - pip install -U no longer reinstalls the same versions  of
         packages. Thanks iguananaut for the pull request.
       o Removed  -E/--environment option and PIP_RESPECT_VIRTUALENV; both use
         a restart-in-venv mechanism that's broken, and neither one is  useful
         since  every  virtualenv  now  has  pip  inside  it.   Replace pip -E
         path/to/venv   install   Foo   with   virtualenv   path/to/venv    &&
         path/to/venv/pip install Foo.
       o Fixed #366 - pip throws IndexError when it calls scraped_rel_links
       o Fixed  #22  -  pip search should set and return a useful shell status
         code
       o Fixed #351 and #365  -  added  global  --exists-action  command  line
         option  to  easier  script  file exists conflicts, e.g. from editable
         requirements from VCS that have a changed repo URL.
       1.0.2 (2011-07-16)
       o Fixed docs issues.
       o Fixed #295 - Reinstall a package when using the install -I option
       o Fixed #283 - Finds a Git tag pointing to same commit as origin/master
       o Fixed #279 - Use absolute path for path to docs in setup.py
       o Fixed #314 - Correctly handle exceptions on Python3.
       o Fixed #320 - Correctly parse --editable lines in requirements files
       1.0.1 (2011-04-30)
       o Start to use git-flow.
       o Fixed #274 - find_command should not raise AttributeError
       o Fixed #273  -  respect  Content-Disposition  header.  Thanks  Bradley
         Ayers.
       o Fixed #233 - pathext handling on Windows.
       o Fixed #252 - svn+svn protocol.
       o Fixed #44 - multiple CLI searches.
       o Fixed #266 - current working directory when running setup.py clean.
       1.0 (2011-04-04)
       o Added  Python  3  support!  Huge thanks to Vinay Sajip, Vitaly Babiy,
         Kelsey Hightower, and Alex Gronholm, among others.
       o Download progress only shown on a real TTY. Thanks Alex Morega.
       o Fixed finding of VCS binaries to not be fooled by same-named directo-
         ries.  Thanks Alex Morega.
       o Fixed   uninstall  of  packages  from  system  Python  for  users  of
         Debian/Ubuntu python-setuptools package (workaround  until  fixed  in
         Debian and Ubuntu).
       o Added get-pip.py installer. Simply download and execute it, using the
         Python interpreter of your choice:
            $ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
            $ python get-pip.py
         This may have to be run as root.
         NOTE:
            Make sure you have distribute installed before using the  install-
            er!
       0.8.3
       o Moved main repository to Github: https://github.com/pypa/pip
       o Transferred  primary  maintenance  from  Ian  to  Jannis Leidel, Carl
         Meyer, Brian Rosner
       o Fixed #14 - No uninstall-on-upgrade with URL package.  Thanks  Oliver
         Tonnhofer
       o Fixed #163 - Egg name not properly resolved. Thanks Igor Sobreira
       o Fixed  #178  -  Non-alphabetical installation of requirements. Thanks
         Igor Sobreira
       o Fixed #199 - Documentation mentions --index instead  of  --index-url.
         Thanks Kelsey Hightower
       o Fixed  #204  -  rmtree undefined in mercurial.py. Thanks Kelsey High-
         tower
       o Fixed bug in Git vcs backend that would break during reinstallation.
       o Fixed bug  in  Mercurial  vcs  backend  related  to  pip  freeze  and
         branch/tag resolution.
       o Fixed bug in version string parsing related to the suffix "-dev".
       0.8.2
       o Avoid redundant unpacking of bundles (from pwaller)
       o Fixed   #32,   #150,   #161   -   Fixed   checking  out  the  correct
         tag/branch/commit when updating an editable Git requirement.
       o Fixed #49 - Added ability to  install  version  control  requirements
         without making them editable, e.g.:
            pip install git+https://github.com/pypa/pip/
       o Fixed #175 - Correctly locate build and source directory on macOS.
       o Added git+https:// scheme to Git VCS backend.
       0.8.1
       o Added  global  --user flag as shortcut for --install-option="--user".
         From Ronny Pfannschmidt.
       o Added support for PyPI mirrors as defined in  PEP  381,  from  Jannis
         Leidel.
       o Fixed #138 - Git revisions ignored. Thanks John-Scott Atlakson.
       o Fixed  #95  -  Initial  editable install of github package from a tag
         fails. Thanks John-Scott Atlakson.
       o Fixed #107 - Can't install if a directory in cwd has the same name as
         the package you're installing.
       o Fixed  #39  -  --install-option="--prefix=~/.local"  ignored with -e.
         Thanks Ronny Pfannschmidt and Wil Tan.
       0.8
       o Track which build/ directories pip creates, never remove  directories
         it doesn't create.  From Hugo Lopes Tavares.
       o Pip now accepts file:// index URLs. Thanks Dave Abrahams.
       o Various  cleanup  to make test-running more consistent and less frag-
         ile.  Thanks Dave Abrahams.
       o Real Windows support (with passing tests). Thanks Dave Abrahams.
       o pip-2.7 etc. scripts are created (Python-version specific scripts)
       o contrib/build-standalone script creates a runnable .zip form of  pip,
         from Jannis Leidel
       o Editable git repos are updated when reinstalled
       o Fix  problem with --editable when multiple .egg-info/ directories are
         found.
       o A number of  VCS-related  fixes  for  pip  freeze,  from  Hugo  Lopes
         Tavares.
       o Significant test framework changes, from Hugo Lopes Tavares.
       0.7.2
       o Set  zip_safe=False  to  avoid  problems some people are encountering
         where pip is installed as a zip file.
       0.7.1
       o Fixed opening of logfile with no  directory  name.  Thanks  Alexandre
         Conrad.
       o Temporary   files  are  consistently  cleaned  up,  especially  after
         installing bundles, also from Alex Conrad.
       o Tests now require at least ScriptTest 1.0.3.
       0.7
       o Fixed uninstallation on Windows
       o Added pip search command.
       o Tab-complete names of installed distributions for pip uninstall.
       o Support tab-completion when there is a global-option before the  sub-
         command.
       o Install  header  files  in  standard  (scheme-default)  location when
         installing outside a virtualenv. Install them to a slightly more con-
         sistent non-standard location inside a virtualenv (since the standard
         location is a non-writable symlink to the global location).
       o pip now logs to a central location by default  (instead  of  creating
         pip-log.txt all over the place) and constantly overwrites the file in
         question. On Unix and macOS this is '$HOME/.pip/pip.log' and on  Win-
         dows it's '%HOME%\\pip\\pip.log'. You are still able to override this
         location with the $PIP_LOG_FILE environment variable.  For a complete
         (appended) logfile use the separate '--log' command line option.
       o Fixed  an  issue with Git that left an editable package as a checkout
         of a remote branch, even if the default  behaviour  would  have  been
         fine, too.
       o Fixed installing from a Git tag with older versions of Git.
       o Expand "~" in logfile and download cache paths.
       o Speed  up  installing  from Mercurial repositories by cloning without
         updating the working copy multiple times.
       o Fixed  installing  directly  from  directories  (e.g.   pip   install
         path/to/dir/).
       o Fixed installing editable packages with svn+ssh URLs.
       o Don't  print  unwanted debug information when running the freeze com-
         mand.
       o Create log file directory automatically. Thanks Alexandre Conrad.
       o Make test suite easier to run successfully. Thanks Dave Abrahams.
       o Fixed "pip install ." and "pip install .."; better error  for  direc-
         tory without setup.py. Thanks Alexandre Conrad.
       o Support Debian/Ubuntu "dist-packages" in zip command. Thanks duckx.
       o Fix relative --src folder. Thanks Simon Cross.
       o Handle missing VCS with an error message. Thanks Alexandre Conrad.
       o Added  --no-download  option  to  install; pairs with --no-install to
         separate download and  installation  into  two  steps.  Thanks  Simon
         Cross.
       o Fix  uninstalling  from  requirements  file  containing  -f,  -i,  or
         --extra-index-url.
       o Leftover build directories are now removed. Thanks Alexandre Conrad.
       0.6.3
       o Fixed import error on Windows with regard to the  backwards  compati-
         bility package
       0.6.2
       o Fixed uninstall when /tmp is on a different filesystem.
       o Fixed uninstallation of distributions with namespace packages.
       0.6.1
       o Added  support for the https and http-static schemes to the Mercurial
         and ftp scheme to the Bazaar backend.
       o Fixed uninstallation of scripts installed with easy_install.
       o Fixed an issue in the package finder that could result in an infinite
         loop while looking for links.
       o Fixed  issue  with  pip  bundle  and local files (which weren't being
         copied into the bundle), from Whit Morriss.
       0.6
       o Add pip uninstall and uninstall-before upgrade (from Carl Meyer).
       o Extended configurability with config files and environment variables.
       o Allow packages to be upgraded, e.g., pip  install  Package==0.1  then
         pip install Package==0.2.
       o Allow  installing/upgrading to Package==dev (fix "Source version does
         not match target version" errors).
       o Added command and option completion for bash and zsh.
       o Extended integration with virtualenv by providing an option to  auto-
         matically use an active virtualenv and an option to warn if no active
         virtualenv is found.
       o Fixed a bug with pip install --download and editable packages,  where
         directories  were  being  set  with 0000 permissions, now defaults to
         755.
       o Fixed uninstallation of easy_installed console_scripts.
       o Fixed uninstallation on macOS Framework layout installs
       o Fixed bug preventing uninstall of editables with source outside venv.
       o Creates download cache directory if not existing.
       0.5.1
       o Fixed a couple little bugs, with git and with extensions.
       0.5
       o Added ability to override the default  log  file  name  (pip-log.txt)
         with the environmental variable $PIP_LOG_FILE.
       o Made the freeze command print installed packages to stdout instead of
         writing them to a file. Use simple redirection (e.g.   pip  freeze  >
         stable-req.txt) to get a file with requirements.
       o Fixed problem with freezing editable packages from a Git repository.
       o Added support for base URLs using <base href='...'> when parsing HTML
         pages.
       o Fixed installing of non-editable packages from version  control  sys-
         tems.
       o Fixed issue with Bazaar's bzr+ssh scheme.
       o Added  --download-dir option to the install command to retrieve pack-
         age archives. If given an editable package it will create an  archive
         of it.
       o Added ability to pass local file and directory paths to --find-links,
         e.g. --find-links=file:///path/to/my/private/archive
       o Reduced the amount of console log messages when fetching  a  page  to
         find  a  distribution was problematic. The full messages can be found
         in pip-log.txt.
       o Added --no-deps option to install ignore package dependencies
       o Added --no-index option to ignore the package index (PyPI)  temporar-
         ily
       o Fixed installing editable packages from Git branches.
       o Fixes freezing of editable packages from Mercurial repositories.
       o Fixed  handling  read-only attributes of build files, e.g. of Subver-
         sion and Bazaar on Windows.
       o When downloading a file from a redirect,  use  the  redirected  loca-
         tion's  extension to guess the compression (happens specifically when
         redirecting to a bitbucket.org tip.gz file).
       o Editable freeze URLs now always use revision hash/id rather than  tip
         or branch names which could move.
       o Fixed comparison of repo URLs so incidental differences such as pres-
         ence/absence of final slashes or quoted/unquoted  special  characters
         don't trigger "ignore/switch/wipe/backup" choice.
       o Fixed   handling  of  attempt  to  checkout  editable  install  to  a
         non-empty, non-repo directory.
       0.4
       o Make -e work better with local hg repositories
       o Construct PyPI URLs the exact way easy_install constructs  URLs  (you
         might notice this if you use a custom index that is slash-sensitive).
       o Improvements on Windows (from Ionel Maries Cristian).
       o Fixed  problem  with  not being able to install private git reposito-
         ries.
       o Make pip zip zip all its arguments, not just the first.
       o Fix some filename issues on Windows.
       o Allow the -i and --extra-index-url options in requirements files.
       o Fix the way bundle components are unpacked and moved around, to  make
         bundles work.
       o Adds  -s  option to allow the access to the global site-packages if a
         virtualenv is to be created.
       o Fixed support for Subversion 1.6.
       0.3.1
       o Improved virtualenv restart  and  various  path/cleanup  problems  on
         win32.
       o Fixed  a  regression  with installing from svn repositories (when not
         using -e).
       o Fixes when installing editable packages that put their  source  in  a
         subdirectory (like src/).
       o Improve pip -h
       0.3
       o Added  support  for editable packages created from Git, Mercurial and
         Bazaar repositories and ability to freeze  them.  Refactored  support
         for version control systems.
       o Do  not  use  sys.exit()  from inside the code, instead use a return.
         This will make it easier to invoke programmatically.
       o Put the install record in Package.egg-info/installed-files.txt  (pre-
         viously they went in site-packages/install-record-Package.txt).
       o Fix  a  problem  with  pip  freeze  not including -e svn+ when an svn
         structure is peculiar.
       o Allow pip -E to work with a virtualenv that uses a different  version
         of Python than the parent environment.
       o Fixed Win32 virtualenv (-E) option.
       o Search the links passed in with -f for packages.
       o Detect  zip  files,  even when the file doesn't have a .zip extension
         and it is served with the wrong Content-Type.
       o Installing editable from existing source now works, like pip  install
         -e  some/path/  will  install the package in some/path/.  Most impor-
         tantly, anything that package requires will also be installed by pip.
       o Add a --path option to pip un/zip, so you  can  avoid  zipping  files
         that are outside of where you expect.
       o Add --simulate option to pip zip.
       0.2.1
       o Fixed  small  problem  that  prevented  using pip.py without actually
         installing pip.
       o Fixed --upgrade, which would download and appear to install  upgraded
         packages, but actually just reinstall the existing package.
       o Fixed  Windows  problem  with putting the install record in the right
         place, and generating the pip script with Setuptools.
       o Download links that include embedded spaces or other  unsafe  charac-
         ters (those characters get %-encoded).
       o Fixed  use of URLs in requirement files, and problems with some blank
         lines.
       o Turn some tar file errors into warnings.
       0.2
       o Renamed to pip, and to install you now do pip install PACKAGE
       o Added command pip zip PACKAGE and pip unzip PACKAGE.  This is partic-
         ularly  intended  for  Google  App Engine to manage libraries to stay
         under the 1000-file limit.
       o Some fixes to bundles, especially editable packages and when creating
         a  bundle using unnamed packages (like just an svn repository without
         #egg=Package).
       0.1.4
       o Added an option --install-option to pass options to pass arguments to
         setup.py install
       o .svn/  directories are no longer included in bundles, as these direc-
         tories are specific to a version of svn -- if you build a bundle on a
         system  with svn 1.5, you can't use the checkout on a system with svn
         1.4.  Instead a file svn-checkout.txt  is  included  that  notes  the
         original  location  and revision, and the command you can use to turn
         it back into an svn checkout.  (Probably unpacking the bundle should,
         maybe  optionally,  recreate this information -- but that is not cur-
         rently implemented, and it would require network access.)
       o Avoid ambiguities over project name case, where for instance  MyPack-
         age  and  mypackage  would be considered different packages.  This in
         particular caused problems on Macs, where MyPackage/  and  mypackage/
         are the same directory.
       o Added support for an environmental variable $PIP_DOWNLOAD_CACHE which
         will cache package downloads, so future installations  won't  require
         large  downloads.   Network  access  is still required, but just some
         downloads will be avoided when using this.
       0.1.3
       o Always use svn checkout (not export) so  that  tag_svn_revision  set-
         tings give the revision of the package.
       o Don't update checkouts that came from .pybundle files.
       0.1.2
       o Improve  error  text  when  there are errors fetching HTML pages when
         seeking packages.
       o Improve bundles: include  empty  directories,  make  them  work  with
         editable packages.
       o If  you use -E env and the environment env/ doesn't exist, a new vir-
         tual environment will be created.
       o Fix dependency_links for finding packages.
       0.1.1
       o Fixed a NameError exception when running pip outside of a  virtualenv
         environment.
       o Added HTTP proxy support (from Prabhu Ramachandran)
       o Fixed  use  of  hashlib.md5 on python2.5+ (also from Prabhu Ramachan-
         dran)
       0.1
       o Initial release
COPYRIGHT
       2008-2016, PyPA
9.0                            December 03, 2018                        PIP(1)