I found that in different folders, sometimes "pip install" will build wheel which take a lot of time, while sometimes it won't. I'm not sure why's that and how to control that. Anyone can help on this.
The command I use: "bin/python -m pip install -r ../requirements.txt" (due to shebang line length limitation, so don't use pip directly)
The output without building wheel (just take a few seconds)
Collecting numpy==1.10.4 (from -r ../requirements.txt (line 1))
Installing collected packages: numpy
Successfully installed numpy-1.10.4
The output with building wheel (take at least 2 minutes)
Collecting numpy==1.10.4 (from -r ../requirements.txt (line 1))
Downloading numpy-1.10.4.tar.gz (4.1MB)
100% |████████████████████████████████| 4.1MB 92kB/s
Building wheels for collected packages: numpy
Running setup.py bdist_wheel for numpy ... done
Stored in directory: /root/.cache/pip/wheels/66/f5/d7/f6ddd78b61037fcb51a3e32c9cd276e292343cdd62d5384efd
Successfully built numpy
Installing collected packages: numpy
Successfully installed numpy-1.10.4
The contents of requirements.tt
numpy==1.10.4
This depends on whether your package is a pure python package (without the need to compile anything, just copy the files somewhere) or a package which also includes c source code (in which case a compilation is necessary and a compiler is called and executed, which takes longer).
http://pythonwheels.com/
You may also want to have a look at the wheel docu:
http://wheel.readthedocs.org/en/latest/
Today I encountered a problem where a package wasn't being installed properly because it turns out that its build process generates incorrect wheel packages, even though direct installation works just fine.
I did a bit of poking around, and it turns out that as of now (pip == 8.1.2
), there isn't a direct way to control whether or not pip
will try to build a wheel out of a given package. I found the relevant source code, and apparently, the wheel build process is used if and only if:
- the wheel module is importable
- a cache directory is in use
As a result of that logic, one can indirectly disable pip's use of wheel-based builds by passing --no-cache-dir
on the install command line.
I got the answer, it is just the first time that the wheel will be build, after that, it will read from cache