我习惯使用 Pip 预先下载软件包,然后将它们复制到目标机器上进行部署。使用新引入的 Python Wheels,我被迫“pip ... --no-use-wheel”,因为某些下载的软件包是特定于平台的(我正在 OSX 上开发并部署到 Debian),并且不会安装在目标机器上。有没有办法下载适用于目标平台(或独立于平台)的 Wheels?
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。
您可以通过
simple界面访问整个PyPI索引,如果感兴趣的包提供一个或多个轮子,它们将在同一地址列出+/<package-name>
。例如:如果您要安装
setuptools
,所有轮子将列在:https://pypi.python.org/simple/setuptools/ 在您的脚本中,请记住实现
PEP-425指定的建议标签优先级。本质上,这可以归结为下载包的最具体(而不是最通用)版本,因为这通常会转化为性能优势,例如用 C 扩展替换某些算法的纯 Python 实现。