【问题标题】:Where is pip cache folder?pip缓存文件夹在哪里?
【发布时间】:2016-04-07 07:11:05
【问题描述】:

Python pip 缓存文件夹在哪里?我在安装过程中出错,现在使用缓存文件重新安装包。那个目录在哪里?我想备份它们以备将来安装。有可能吗?

比如我有这个

Using cached cssselect-0.9.1.tar.gz

我在 google 上搜索了这个目录,但我看到的任何东西都在学习如何从文件夹安装,我想找到默认的缓存目录。还有一个问题,这些缓存文件会保留在那个目录中还是很快会被删除?

【问题讨论】:

  • 这取决于操作系统。
  • windows @MartinKonecny
  • 我相信它在 Windows 上的 ~\AppData\Local\pip\cache 中。
  • 有很多名称不明确的文件,例如'0f4017d43a13156e41129019e85a69fcc2dd34e6904ed88395bb5451'...我能准确找到'cssselect-0.9.1.tar.gz'文件吗? @弗雷德里克
  • 缓存并不总是人类可读的,就像在这种情况下一样。

标签: python pip


【解决方案1】:

缓存目录的默认位置取决于操作系统:

Unix

~/.cache/pip 并且它尊重 XDG_CACHE_HOME 目录。

macOS

~/Library/Caches/pip

窗口

\pip\Cache

车轮缓存

pip 将从 pip 缓存目录中的子目录 wheel 读取并使用在那里找到的任何包。 [剪辑]

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

可以通过命令行选项--cache-dir更改缓存目录的位置。

【讨论】:

  • == %LOCALAPPDATA%
  • %LOCALAPPDATA%\pip\Cache
  • $XDG_CACHE_HOME 为空。 find ~/.cache/pip | grep -i tensor 显示 tensorflow_determinismsilence_tensorflow 轮子,但不显示 tensorflow-gpu。然而pip install tensorflow-gpuUsing cached https://.../tensorflow_gpu-2.0.0-cp37-cp37m-manylinux2010_x86_64.whl。我还应该在哪里查找此文件?
  • (我还下载了tensorflow_gpu-2.0.0-cp37-cp37m-manylinux2010_x86_64.whl 并使用fdupes 检查了重复项,但找不到...)
【解决方案2】:

这取决于操作系统。

使用 pip 20.1 或更高版本,您可以通过以下方式找到它:

pip cache dir

以 macOS 为例:

$ pip cache dir
/Users/hugo/Library/Caches/pip

文档:

【讨论】:

【解决方案3】:

Pythonic 和跨平台方式:

import pip
from distutils.version import LooseVersion

if LooseVersion(pip.__version__) < LooseVersion('10'):
    # older pip version
    from pip.utils.appdirs import user_cache_dir
else:
    # newer pip version
    from pip._internal.utils.appdirs import user_cache_dir

print(user_cache_dir('pip'))
print(user_cache_dir('wheel'))

在后台,它规范化路径,管理异国和普通操作系统和平台的不同位置,执行 Windows 注册表查找。

值得一提的是,如果您安装了不同的 Python 版本,2.x'es 和 3.x'es,它们都共享相同的缓存位置。

【讨论】:

  • ModuleNotFoundError: No module named 'pip.utils' ,在 Ubuntu 上为 pip 10.0.1。
  • 如果你想要 pip 自己的缓存目录,你也可以使用 from pip._internal.locations import USER_CACHE_DIRpython -c "from pip._internal.locations import USER_CACHE_DIR; print(USER_CACHE_DIR)" 如果你在脚本中抓取东西等。
  • 请不要进入_internal 并获取值。 pip 的内部结构并不打算像图书馆一样使用并且可能会发生变化。在 pip 20.1 及更高版本上的pip cache dir 是获得此值的最佳方式。
【解决方案4】:

您可以备份关联的wheel,而不是尝试执行缓存文件夹的备份。

下载0.9.1版csselect的轮子到/tmp/wheelhouse:

pip wheel --wheel-dir=/tmp/wheelhouse cssselect==0.9.1

安装下载的轮子:

pip install /tmp/wheelhouse/cssselect-0.9.1-py2-none-any.whl

【讨论】:

  • cssselect-0.9.1-py2-none-any.whl 文件名的稳定性/可预测性如何?
  • 取决于维护者在打包时在 setup.py 中做了什么。
猜你喜欢
  • 1970-01-01
  • 2014-03-30
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 2020-04-01
相关资源
最近更新 更多