Compiling Python Wheels¶
Python Wheels are used to distribute pre-compiled versions of Python packages.
This allows deployment of those packages on servers without having to install
gcc
, python-devel
, and various other C headers – and allows for all
servers deployed using those Wheels to have exactly the same version of the
dependency installed.
Note
The requirements for Ganeti Web Manager will be used as an example here.
Installing Dependencies¶
Only compile a wheel on a system set up the same as the system the wheel will be deployed on. For instance, a x64 Debian 8 machine will only ever compile wheels for other Debian 8 machines.
To compile a wheel, pip
, gcc
, libffi
, the and the Python development
headers are needed. Other dependencies might be needed; for example,
cryptographic wheels will require libssl-dev
or openssl-devel
.
Building the Wheels¶
Once pip
, gcc
, and other dependencies are installed, install wheel
with pip
:
$ pip install wheel
To compile all of the wheels
for a given project, the -r
flag can point
to a requirements file:
$ pip wheel -r requirements.txt
The finished wheels will be put into wheelhouse/
. The wheels can be uploaded
to wherever they are needed; for instance, Ganeti Web Manager’s setup script
searches for wheels on ftp.osuosl.org
.