存储的wheel.whl缓存文件在哪里?

时间:2019-12-08 18:30:30

标签: python pip python-wheel

$ python3 -m venv ~/venvs/vtest
$ source ~/venvs/vtest/bin/activate
(vtest) $ pip install numpy
Collecting numpy
  Cache entry deserialization failed, entry ignored
  Using cached https://files.pythonhosted.org/packages/d2/ab/43e678759326f728de861edbef34b8e2ad1b1490505f20e0d1f0716c3bf4/numpy-1.17.4-cp36-cp36m-manylinux1_x86_64.whl
Installing collected packages: numpy
Successfully installed numpy-1.17.4
(vtest) $

我正在寻找numpy-1.17.4-cp36-cp36m-manylinux1_x86_64.whl轮子的缓存位置?

$ sudo updatedb
$ locate numpy-1.17.4
$ # nada ;(

文档https://pip.pypa.io/en/stable/reference/pip_install/#wheel-cache告诉我们Pip will read from the subdirectory wheels within the pip cache directory and use any packages found there.

$ pip --version
pip 9.0.1 from ~/venvs/vtest/lib/python3.6/site-packages (python 3.6)
$

要回答Hamza Khurshid numpy不在〜/ .cache / pip / wheels上

$ find ~/.cache/pip/wheels -name '*.whl' |grep -i numpy
$

.cache / pip / wheels似乎仅用于用户创建的轮子,而不用于下载的轮子,我应该使用export PIP_DOWNLOAD_CACHE=$HOME/.pip/cache吗?

2 个答案:

答案 0 :(得分:1)

请参考以下路径查找WHL缓存文件。

在Windows中,

%USERPROFILE%\AppData\Local\pip\cache

在Unix中,

~/.cache/pip

在macOS中,

~/Library/Caches/pip.

答案 1 :(得分:1)

消息

Using cached https://files.pythonhosted.org/packages/d2/ab/43e678759326f728de861edbef34b8e2ad1b1490505f20e0d1f0716c3bf4/numpy-1.17.4-cp36-cp36m-manylinux1_x86_64.whl

意味着pip使用的是HTTP缓存,而不是wheel缓存(如您所述,仅用于本地构建的wheel)。

HTTP缓存中的文件名是所请求URL的sha224。

您可以像这样检索文件

$ pwd
/home/user/.cache/pip/http
$ find . -name "$(printf 'https://files.pythonhosted.org/packages/65/26/32b8464df2a97e6dd1b656ed26b2c19460
6c16fe163c695a992b36c11cdf/six-1.13.0-py2.py3-none-any.whl' | sha224sum - | awk '{print $1}')"
./f/6/0/2/d/f602daffc1b0025a464d60b3e9f8b1f77a4538b550a46d67018978db

文件的格式虽然不稳定,但取决于pip版本。有关详细信息,您可以查看pip使用的最新cachecontrol中使用的实现。

如果要获取实际文件,一种更简单的方法是使用pip download,如果文件与要下载的URL匹配,它将把文件从缓存中移到当前目录中。