16

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

4

2 回答 2

20

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:使用二进制分发包(即轮子,与 sdist 的“源分发包”相对)用于“:all:”将在此命令中安装的东西。代替:all:,可以传递以逗号分隔的特定分发包列表;查看pip install --help更多信息。

注意:我使用术语“分发包”以避免与其他类型的“包”(importpython 脚本中的包)混淆。

于 2017-08-22T10:04:54.050 回答
3

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

您可以通过简单的界面访问整个 PyPI 索引,如果感兴趣的包提供一个或多个轮子,它们将列在同一地址 + 处/<package-name>

例如:如果您要安装setuptools所有轮子,则会在以下位置列出:https ://pypi.python.org/simple/setuptools/

在您的脚本中,请记住实施PEP-425指定的推荐标签优先级。本质上,这归结为下载最具体(而不是最通用)版本的包,因为这通常会转化为性能优势,例如 C 扩展替换某些算法的纯 python 实现。

于 2014-09-17T15:00:08.163 回答