In which case pip install building wheel?

2019-02-22 15:13发布

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

标签: python pip
3条回答
劫难
2楼-- · 2019-02-22 16:04

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.

查看更多
不美不萌又怎样
3楼-- · 2019-02-22 16:07

I got the answer, it is just the first time that the wheel will be build, after that, it will read from cache

查看更多
何必那么认真
4楼-- · 2019-02-22 16:09

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/

查看更多
登录 后发表回答