如何缓存下载的PIP包

时间:2012-04-26 15:14:07

标签: python pip

如何防止PIP重新下载以前下载的软件包?我正在测试matplotlib的安装,这是一个11MB的软件包,依赖于几个特定于发行版的软件包。每次运行pip install matplotlib时,它都会重新下载matplotlib。我该如何阻止它?

3 个答案:

答案 0 :(得分:110)

对于新的Pip版本:

默认情况下,较新的Pip版本现在可以缓存下载。请参阅此文档:

https://pip.pypa.io/en/stable/reference/pip_install/#caching

对于旧的Pip版本:

创建名为~/.pip/pip.conf的配置文件,并添加以下内容:

[global]
download_cache = ~/.cache/pip

在一个命令中:

printf '[global]\ndownload_cache = ~/.cache/pip\n' >> ~/.pip/pip.conf

答案 1 :(得分:56)

您可以使用特定的环境变量 PIP_DOWNLOAD_CACHE ,并使其指向存储包的目录。如果要再次安装它们,它们将从该目录中获取。

PIP似乎还有一个额外的选项pip --download-cache应该做类似的事情,但我自己从未尝试过。对于您的示例,为避免每次重新下载matplotlib,您将执行以下操作:

pip install --download-cache /path/to/pip/cache matplotlib

这会回答你的问题吗?

答案 2 :(得分:8)

你可以

# download and extract package to build path
pip install --no-install matplotlib

# the build path could be found by 
pip install --help|grep Unpack\ packages\ into -A 2

# then rm pip-delete-this-directory.txt inside the build path
# this prevent pip from removing package from the build directory after install
# you could check the content of the file
rm build/pip-delete-this-directory.txt

# from now on you could install matplotlib quickly
# this uses single build directory 
# and can speed up compiling by caching intermediate objects.
pip install --no-download matplotlib

另外,您可以手动下载软件包

pip install -d dir_for_packages matplotlib

然后用un-tar和python setup install稍后安装它。

pip install --download-cache以类似的方式工作,带有额外的检查:它首先从web搜索目标包的最新版本或指定版本,如果搜索结果并且在指定的目录中有缓存包download-cache,将使用缓存的包而不是下载。例如,

pip install --download-cache . pymongo

将pymongo包下载到当前目录:

http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpymongo%2Fpymongo-2.1.1.tar.gz
http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpymongo%2Fpymongo-2.1.1.tar.gz.content-type