scipy pip如何决定使用多少个linux wheel?

mi7gmzs6  于 2022-11-10  发布在  Linux
关注(0)|答案(5)|浏览(226)

现在支持二进制多Linux轮:
https://github.com/pypa/manylinux
具体来说,我想在Travis上安装许多用于scipy的linux wheel,使用值得信赖的beta操作系统。这些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轮子。
具体地说,我对替代方案不感兴趣,如果可以的话,请回答这个问题。

tvokkenx

tvokkenx1#

您需要pip8.1或更高版本,以及基于glibc的linux发行版(而不是像alpine linux那样的musl libc)。
编辑:函数pip._internal.utils.compatibility_tags.get_supported()应该返回支持的平台标签的列表。Pip优先选择列表中出现在前面的wheel标签。
我还可以建议您使用python 3.5而不是2.7 ;)

m1m5dgzv

m1m5dgzv2#

对于pip 10,您需要运行:

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

rkttyhzu3#

从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解释器的属性,该解释器是包安装、下载等的目标。

deyfvvtc

deyfvvtc4#

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

lo8azlld

lo8azlld5#

在我的示例中,我希望安装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的wheel应该在任何基于glibc〉= x. y的发行版上工作。manylinux项目支持:

  • 许多适用于x86_64、i686、aarch64、ppc64le和s390x的linux_2_24映像。
  • 用于x86_64、aarch64和ppc64le的多个linux_2_28映像

请参阅说明:https://github.com/pypa/manylinux

相关问题