Note The technique presented here has been obsoleted in pip-7.0. See the changelog and PR#2618.

On my Windows machine numpy takes 8 minutes to build and install . And no, that doesn't include the time to install the compiler tools, it wouldn't even be close. I'm not sure what's going on, in an Ubuntu VM it builds and installs in under 3 minutes. It's annoying, but fortunately enough there's a nice trick to speed up installation: store all your wheels somewhere and then use that directory as a cache. This makes installing large packages that don't have wheels on PyPI faster even if they don't have C extensions as the build step is skipped.

In case you were wondering, pip doesn't cache the wheels built locally , so this is worth doing when there are no wheels for your platform on PyPI.

On Windows just make a file c:\Users\username\pip\pip.ini and add this in:

[global] find-links = file://c:/Users/username/.pip-wheelhouse [wheel] wheel-dir = c:/Users/username/.pip-wheelhouse

For Linux it's /home/username/.pip/pip.conf :

[global] find-links = file:///home/username/.pip-wheelhouse [wheel] wheel-dir = /home/username/.pip-wheelhouse

Alternatively, you can use environment variables for this. In your .bashrc or .zshrc add:

export STANDARD_CACHE_DIR = " ${ XDG_CACHE_HOME :- ${ HOME } /.cache } /pip" export WHEELHOUSE = " ${ STANDARD_CACHE_DIR } /wheelhouse" export PIP_FIND_LINKS = "file:// ${ WHEELHOUSE } " export PIP_WHEEL_DIR = " ${ WHEELHOUSE } "

Then just run:

pip wheel numpy

That will store the wheel in the default wheel directory, which you've set in the configuration.

After that pip wheel numpy will be very fast. This is highly desirable especially if you use tools that frequently rebuild the virtualenv, like Tox.