# wheel / docs / index.rst

## Usage

The current version of wheel can be used to speed up repeated installations by reducing the number of times you have to compile your software. When you are creating a virtualenv for each revision of your software, the savings can be dramatic. This example packages pyramid and all its dependencies as wheels, and then installs pyramid from the built packages:

# Install a version of pip that supports wheel
pip install -e git+https://github.com/qwcode/pip#egg=pip
# Install wheel
pip install wheel

# Build a directory of wheels for pyramid and all its dependencies
pip wheel --wheel-dir=/tmp/wheelhouse pyramid

# Install from cached wheels
pip install --use-wheel --no-index --find-links=/tmp/wheelhouse pyramid


For lxml, an up to 3-minute "search for the newest version and compile" can become a less-than-1 second "unpack from wheel".

To build an individual wheel, run python setup.py bdist_wheel. Note that bdist_wheel only works with distribute (import setuptools); plain distutils does not support pluggable commands like bdist_wheel. On the other hand pip always runs setup.py with setuptools enabled.

Wheel also includes its own installer that can only install wheels (not sdists) from a local file or folder, but has the advantage of working even when distribute or pip has not been installed.

Wheel's builtin utility can be invoked directly from wheel's own wheel:

$python wheel-0.14.0-py2.py3-none-any.whl/wheel -h usage: wheel [-h] {keygen,sign,verify,unpack,install,convert,help} ... positional arguments: {keygen,sign,verify,unpack,install,convert,help} commands keygen Generate signing key sign Sign wheel unsign Remove signature from wheel verify Verify signed wheel unpack Unpack wheel install Install wheels convert Convert egg or wininst to wheel help Show this help optional arguments: -h, --help show this help message and exit  ## Automatically sign wheel files python setup.py bdist_wheel will automatically sign wheel files if the environment variable WHEEL_TOOL is set to the path of the wheel command line tool: # Install the wheel tool and its dependencies$ pip install wheel[tool]
# Generate a signing key (only once)
$wheel keygen$ export WHEEL_TOOL=/path/to/wheel
\$ python setup.py bdist_wheel


Signing is done in a subprocess because it is not convenient for the build environment to contain bindings to the keyring and cryptography libraries. The keyring library may not be able to find your keys (choosing a different key storage back end based on available dependencies) unless you run it from the same environment used for keygen.

A future version of wheel sign will be able to choose different signing keys depending on the package name, in case a user wishes to reserve a more widely trusted key for packages they intend to distribute.

## Format

The wheel format is being documented as PEP 427 "The Wheel Binary Package Format..." (http://www.python.org/dev/peps/pep-0427/).

## Slogans

Wheel

• Because ‘newegg’ was taken.
• Python packaging - reinvented.
• A container for cheese.
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.