如何在以后的日期下载 PyPI 包以供 pip 安装?

9

我有一个带有固定软件包版本的pip需求文件。我需要在没有直接互联网连接的系统上安装PyPI软件包。如何在不访问每个软件包页面的情况下,轻松下载我现在需要的软件包,以供以后使用pip进行安装?


可能是如何使用Python的pip下载并保留软件包的压缩文件?的重复问题。 - Jayanth Koushik
2个回答

9

pip文档中有一个很好的例子,展示了快速本地安装

$ pip install --download <DIR> -r requirements.txt
$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt

这主要是为了加快速度,如果你在联网的机器上执行第一步,然后将文件复制到另一台机器上,再运行第二步,你就可以在没有网络连接的情况下安装所有所需的内容。


尽管OP的问题并没有要求跨平台功能,但需要警告的是,这个解决方案无法解决跨平台问题(即,不能简单地在Windows机器上运行第一个命令,然后在Linux机器上运行第二个命令,因为某些下载的包将是特定于平台的)。 - Eduardo
2
--download选项已被pip弃用(将在10版本中删除),并替换为自己的命令。 相应的命令是“pip download -r <requirements file> -d <DIR>”。 - musingsole

2
为了补充Ford的回答,为了避免跨平台问题,可以采取以下方法:
在具有互联网访问权限的计算机上执行以下操作:
$ pip install --download <DIR> -r requirements.txt
$ pip install --download <DIR> -r requirements.txt --no-use-wheel

如果该软件包的wheel是跨平台的,则这将下载可用的wheel,但还会下载源代码,以便在任何平台上构建该软件包,以防wheel不适用于目标系统。

然后,如Ford所建议的,在具有互联网访问权限的计算机中下载所需文件并将其移动到另一台计算机上执行以下操作:

$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt

我不能保证这种方法在所有情况下都有效,但是当我尝试从具有Internet访问权限的Windows机器下载软件包及其依赖项以安装到没有Internet访问权限的CentOS机器时,它对我有效。如果在每台机器上使用不同版本的Python,则还可能需要考虑其他因素(在我的情况下,两台机器上都安装了Python 3.4)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接