支持二进制多Linux轮:
https://github.com/pypa/manylinux
具体来说,我想在 Travis 上安装许多 linux 轮 for scipy,使用可靠的 beta 操作系统。车轮列在这里:
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 更新到支持 二进制许多 Linux 轮子的版本 8.1.2。
具体来说,我对替代解决方案不感兴趣,如果可以的话,请回答问题。
你需要 pip 8.1 或更高版本和一个基于 glibc 的 Linux 发行版(而不是像 alpine Linux 那样的 musl libc)。
编辑:函数pip._internal.utils.compatibility_tags.get_supported()
应按顺序返回支持的平台标记列表。Pip 更喜欢在此列表中较早出现的轮子标签,而不是稍后出现的标签。
另外,我建议您使用python 3.5而不是2.7;)
从 pip 版本 19.3 开始, TargetPython.get_tags()
回报支持的 PEP 425 标签,用于检查车轮候选(来源)。标记按优先顺序返回(最优先)。
from pip._internal.models.target_python import TargetPython
target_python = TargetPython()
pep425tags = target_python.get_tags()
类 TargetPython 封装了 Python 解释器的属性,该解释器面向包安装、下载等。
对于 pip 10,您需要运行:
from pprint import pprint
import pip._internal
pprint(pip._internal.pep425tags.get_supported())
因此,正确的答案是 pip 有一个支持的标签列表,并将尝试匹配这些标签。 pip.pep425tags.get_supported()
将列出您平台的标签,并将使用该列表来匹配 manylinux 二进制轮子。
就我而言,我想安装dmlab2d-1.0-cp39-cp39-manylinux_2_31_x86_64.whl
python -m pip install dmlab2d-1.0-cp39-cp39-manylinux_2_31_x86_64.whl
但是,它显示了ERROR: dmlab2d-1.0-cp39-cp39-manylinux_2_31_x86_64.whl is not a supported wheel on this platform.
.我认为这可能与操作系统的版本有关。 我的是 Ubuntu 18。然后我试图在 dmlab2d-1.0-cp39-cp39-manylinux_2_31_x86_64.whl
中将 31 的数量更改为 24.它有效。
cp dmlab2d-1.0-cp39-cp39-manylinux_2_31_x86_64.whl dmlab2d-1.0-cp39-cp39-manylinux_2_24_x86_64.whl
我认为31
适用于 Ubuntu 20,24
适用于 Ubuntu 18。
PEP 600 被设计为"面向未来",并且不强制构建特定的符号和特定的发行版。它只声明标记为manylinux_x_y的轮子可以在任何基于 glibc>=x.y 的发行版上运行。manylinux项目支持:
- manylinux_2_24 x86_64、i686、aarch64、ppc64le 和 s390x 的图像。
- manylinux_2_28 x86_64、aarch64 和 ppc64le 的图像
请参阅说明:https://github.com/pypa/manylinux