
.. _`pip wheel`:

=========
pip wheel
=========

.. contents::


Usage
=====

.. tabs::

   .. group-tab:: Unix/macOS

      .. pip-command-usage:: wheel "python -m pip"

   .. group-tab:: Windows

      .. pip-command-usage:: wheel "py -m pip"


Description
===========

.. pip-command-description:: wheel


Build System Interface
----------------------

In order for pip to build a wheel, ``setup.py`` must implement the
``bdist_wheel`` command with the following syntax:

.. tabs::

   .. group-tab:: Unix/macOS

      .. code-block:: shell

         python setup.py bdist_wheel -d TARGET

   .. group-tab:: Windows

      .. code-block:: shell

         py 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 commands
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:

.. tabs::

   .. group-tab:: Unix/macOS

      .. code-block:: shell

         python -m pip wheel --global-option bdist_ext --global-option -DFOO wheel

   .. group-tab:: Windows

      .. code-block:: shell

         py -m 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 accident of
the current implementation than a supported interface.



Options
=======

.. pip-command-options:: wheel

.. pip-index-options:: wheel


Examples
========

#. Build wheels for a requirement (and all its dependencies), and then install

   .. tabs::

      .. group-tab:: Unix/macOS

         .. code-block:: shell

            python -m pip wheel --wheel-dir=/tmp/wheelhouse SomePackage
            python -m pip install --no-index --find-links=/tmp/wheelhouse SomePackage

      .. group-tab:: Windows

         .. code-block:: shell

            py -m pip wheel --wheel-dir=/tmp/wheelhouse SomePackage
            py -m pip install --no-index --find-links=/tmp/wheelhouse SomePackage

#. Build a wheel for a package from source

   .. tabs::

      .. group-tab:: Unix/macOS

         .. code-block:: shell

            python -m pip wheel --no-binary SomePackage SomePackage

      .. group-tab:: Windows

         .. code-block:: shell

            py -m pip wheel --no-binary SomePackage SomePackage
