我在不同的virtualenv环境中安装了很多相同的包。有没有办法让我下载一次包,然后从本地缓存安装pip?
这将减少下载带宽和时间。
发布于 2013-04-11 20:22:32
对于较新的Pip版本:
较新的Pip版本现在默认缓存下载。请参阅此文档:
https://pip.pypa.io/en/stable/reference/pip_install/#caching
对于较早的Pip版本:
创建一个名为~/.pip/pip.conf
的配置文件,并添加以下内容:
[global]
download_cache = ~/.cache/pip
在OS上,更好的选择是~/Library/Caches/pip
,因为它遵循其他OS程序使用的惯例。
发布于 2012-08-28 02:23:35
PIP_DOWNLOAD_CACHE有一些严重的问题。最重要的是,它将下载的主机名编码到缓存中,因此不可能使用镜像。
管理pip下载缓存的更好方法是将“下载包”步骤与“安装包”步骤分开。下载的文件通常被称为"sdist文件“(源代码发行版),我将把它们存储在一个目录$SDIST_CACHE中。
这两个步骤最终是:
pip install --no-install --use-mirrors -I --download=$SDIST_CACHE <package name>
它将下载该包并将其放在$SDIST_CACHE所指向的目录中。它不会安装该程序包。然后你运行:
pip install --find-links=file://$SDIST_CACHE --no-index --index-url=file:///dev/null <package name>
将软件包安装到您的虚拟环境中。理想情况下,$SDIST_CACHE应该在您的源代码控制下提交。在部署到生产环境时,您只需运行第二个pip命令即可安装软件包,而无需下载它们。
发布于 2012-12-10 20:21:39
仅使用pip (我的版本是1.2.1),您还可以像这样构建本地存储库:
if ! pip install --find-links="file://$PIP_SDIST_INDEX" --no-index <package>; then
pip install --download-directory="$PIP_SDIST_INDEX" <package>
pip install --find-links="file://$PIP_SDIST_INDEX" --no-index <package>
fi
在pip的第一次调用中,只在本地存储库中查找需求文件中的包,然后从本地存储库中安装。如果失败,pip将从其通常的位置(例如PyPI)检索包并将其下载到PIP_SDIST_INDEX
(但不安装任何东西!)。第一次调用是“重复的”,以便从本地索引正确地安装包。
(--download-cache
创建的本地文件名是完整的(转义的) URL,pip不能将其用作--find-links
的索引。如果找到缓存的文件,--download-cache
将使用该文件。我们可以将这个选项添加到pip的第二次调用中,但是由于索引已经起到了缓存的作用,所以它不一定会带来很多东西。例如,如果您的索引是空的,这将有所帮助。)
https://stackoverflow.com/questions/4806448
复制相似问题