在哪种情况下pip安装建筑轮?

zjf*_*fdu 10 python pip

我发现在不同的文件夹中,有时候"pip install"会构建一个花费很多时间的轮子,而有时则不会.我不知道为什么会这样以及如何控制它.任何人都可以提供帮助.

我使用的命令:"bin/python -m pip install -r ../requirements.txt"(由于shebang行长度限制,所以不要直接使用pip)

没有构建轮子的输出(只需几秒钟)

Collecting numpy==1.10.4 (from -r ../requirements.txt (line 1))
Installing collected packages: numpy
Successfully installed numpy-1.10.4
Run Code Online (Sandbox Code Playgroud)

带建筑轮的输出(至少需要2分钟)

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
Run Code Online (Sandbox Code Playgroud)

requirements.tt的内容

numpy==1.10.4
Run Code Online (Sandbox Code Playgroud)

Sim*_*ier 11

今天我遇到了一个问题,即没有正确安装软件包,因为事实证明它的构建过程会产生不正确的轮组,即使直接安装工作正常.

我做了一些探讨,事实证明,截至目前(pip == 8.1.2),没有直接的方法来控制是否pip会尝试从给定的包中构建一个轮子.我找到了相关的源代码,显然,当且仅当以下情况时才使用轮构建过程:

  • 车轮模块是可导入的
  • 缓存目录正在使用中

作为该逻辑的结果,可以通过传递--no-cache-dir安装命令行间接禁用pip对基于轮的构建的使用.

  • 实际上,您可以通过设置“--no-binary={package_name}”来明确哪些包不应该生成轮子...... (3认同)
  • 看起来这个逻辑已经改变了很多(现在是“pip==19”)。代码现在可以追溯到https://github.com/pypa/pip/blob/cf722df4f9d7f8ee2d62e53ef2354ea65e932170/src/pip/_internal/wheel_builder.py#L48。不幸的是,似乎没有一个方便的标志来关闭轮子构建功能(除了卸载轮子),同时保留已经带有轮子的软件包的轮子安装。 (2认同)

tfv*_*tfv 10

这取决于你的包是一个纯python包(不需要编译任何东西,只需将文件复制到某个地方)还是一个还包含c源代码的包(在这种情况下需要编译并调用并执行编译器,这需要更长的时间)。

http://pythonwheels.com/

您可能还想查看轮子文档:

http://wheel.readthedocs.org/en/latest/

  • 无论“numpy”是否是一个纯Python包,都会描述“它”是否会导致Python构建轮子,但这并不能解释为什么有时它会构建轮子,有时不会,正如问题所示。 (13认同)

zjf*_*fdu 5

我得到了答案,这只是第一次构建轮子,之后它将从缓存中读取