pip如何决定使用哪个linux轮?

时间:2016-06-13 14:57:57

标签: python linux scipy pip travis-ci

现在支持Binary many-linux wheel:

https://github.com/pypa/manylinux

具体来说,我想使用可靠的beta操作系统在Travis上安装许多用于scipy的linux wheel。车轮列在这里:

https://pypi.python.org/pypi/scipy/0.17.1

我明白了:

Collecting scipy
  Downloading scipy-0.17.1.tar.gz (12.4MB)
    100% |████████████████████████████████| 12.4MB 100kB/s 

而不是:

Collecting scipy
  Downloading scipy-0.17.1-cp27-cp27mu-manylinux1_x86_64.whl (39.5MB)
    100% |████████████████████████████████| 39.5MB 37kB/s 

所以,为了解决这个问题,我想知道pip如何确定下载和安装哪个轮子。是的,我确实将pip更新到版本8.1.2,它支持二进制许多linux轮子。

具体来说,我对替代解决方案感兴趣,只要回答这个问题,如果可以的话。

4 个答案:

答案 0 :(得分:9)

你需要pip 8.1或更高版本以及基于glibc的linux发行版(而不是musl libc作为alpine linux)。

编辑:函数pip._internal.pep425tags.get_supported()应按顺序返回支持的platform tags列表。 Pip优先选择此列表中较早出现的轮标签,而不是稍后出现的标签。

我也建议您使用python 3.5代替2.7;)

答案 1 :(得分:2)

对于第10点,您需要运行:

from pprint import pprint
import pip._internal
pprint(pip._internal.pep425tags.get_supported())

答案 2 :(得分:1)

所以,正确答案是pip有一个支持的标签列表,并尝试匹配这些标签。 pip.pep425tags.get_supported()将列出您平台的标签,并且还会使用该列表来匹配manylinux二进制轮。

答案 3 :(得分:0)

从 pip 19.3 版开始, TargetPython.get_tags() 返回 支持的 PEP 425 tags 来检查轮子候选对象 (source)。标签按优先顺序返回(最优先)。

from pip._internal.models.target_python import TargetPython
target_python = TargetPython()
pep425tags = target_python.get_tags()

TargetPython 封装了 Python 解释器的属性,该解释器的目标是包安装、下载等。