如何通过pip下载跨平台轮子?

问题描述 投票:0回答:2

我习惯使用 Pip 预先下载软件包,然后将它们复制到目标机器上进行部署。使用新引入的 Python Wheels,我被迫“pip ... --no-use-wheel”,因为某些下载的软件包是特定于平台的(我正在 OSX 上开发并部署到 Debian),并且不会安装在目标机器上。有没有办法下载适用于目标平台(或独立于平台)的 Wheels?

python pip setuptools python-wheel
2个回答
36
投票

pip download
命令现在具有
--platform
参数,您可以使用它来指定所需的平台:

pip download --platform=manylinux1_x86_64 --only-binary=:all: lxml
  • --platform=manylinux1_x86_64
    选项表示您需要适用于该特定平台的轮子。
    manylinux1_x86_64
    大致意思是“与大多数发行版和英特尔 CPU 架构兼容”。 这个答案链接到一些 PEP,这些 PEP 描述了存在哪些平台以及它们与哪些操作系统/CPU 兼容。
  • --only-binary=:all:
    强制使用二进制分发包(即wheels,而不是sdist“源分发包”)来执行“:all:”将在此命令中安装的内容。可以传递以逗号分隔的特定发行包列表,而不是
    :all:
    ;请参阅
    pip install --help
    了解更多信息。

注意:我使用术语“分发包”以避免与另一种“包”混淆(可以在 python 脚本中

import
)。

编辑:manylinux1 自 2022 年 1 月 1 日起EOL。使用升级的源 - 检查 Manylinux 的 README.md


3
投票
实现这一目标的最简单方法是使用自定义脚本。

您可以通过

simple界面访问整个PyPI索引,如果感兴趣的包提供一个或多个轮子,它们将在同一地址列出+/<package-name>

例如:如果您要安装

setuptools

,所有轮子将列在:
https://pypi.python.org/simple/setuptools/

在您的脚本中,请记住实现

PEP-425指定的建议标签优先级。本质上,这可以归结为下载包的最具体(而不是最通用)版本,因为这通常会转化为性能优势,例如用 C 扩展替换某些算法的纯 Python 实现。

© www.soinside.com 2019 - 2024. All rights reserved.