我需要专门安装 psycopg2 v2.4.1。我不小心做了:
pip install psycopg2
代替:
pip install psycopg2==2.4.1
这将安装 2.4.4 而不是早期版本。
现在,即使在我 pip 卸载 psycopg2 并尝试使用正确的版本重新安装之后,pip 似乎正在重新使用它第一次下载的缓存。
如何强制 pip 清除其下载缓存并使用我在命令中包含的特定版本?
如果使用 pip 6.0 或更高版本,请尝试添加 --no-cache-dir
选项 (source)。
如果使用比 pip 6.0 更早的 pip,请使用 pip install -U pip
升级它。
清除适合您系统的缓存目录
Linux 和 Unix
~/.cache/pip # and it respects the XDG_CACHE_HOME directory.
操作系统
~/Library/Caches/pip
视窗
%LocalAppData%\pip\Cache
更新
使用 pip 20.1
或更高版本,您可以通过在命令行中键入以下内容轻松找到操作系统的完整路径:
pip cache dir
我的 Ubuntu 安装的示例输出:
➜ pip3 cache dir
/home/tawanda/.cache/pip
pip cache purge
。
pip cache purge
仅适用于 pip 20.1。这个答案似乎适用于所有 pip
版本和所有平台,这将使其更普遍有用,但我不知道是不是这样。
使用 pip 20.1 或更高版本,您可以执行以下操作:
pip cache remove matplotlib:从 pip 的缓存中删除所有与 matplotlib 相关的轮子文件。
pip 缓存清除:从 pip 的缓存中清除所有轮子文件。
pip cache dir:获取缓存的位置。
如果您出于某种原因不想使用 pip 缓存(根据 the official docs,这是个坏主意),您的选择是:
pip install --no-cache-dir
pip config set global.no-cache-dir false:将 pip 配置为不“全局”使用缓存(在所有命令中)。
围绕这个问题的一些历史(戴上 pip 维护者的帽子):
问题中提到的“由于缓存而安装错误版本”问题的具体问题已在 pip 1.4 中修复,早在 2013 年!)
修复了一些与清理和不重用构建目录相关的问题。 (#413、#709、#634、#602、#939、#865、#948)
从 pip 6.0(早在 2014 年!)开始,可以告诉 pip install
、pip download
和 pip wheel
命令避免使用带有 --no-cache-dir
选项的缓存。 (例如 pip install --no-cache-dir <package>
)
那时,是的,传递 --no-cache-dir
是避免此错误的唯一选择。所以......有点不幸,这是“pip cache remove”的热门搜索结果。 :)
从 pip 10.0(早在 2018 年!)开始,添加了一个 pip config
命令,可用于将 pip 配置为始终忽略缓存。这总是可以通过手动编辑相关文件来实现的,但这在命令行中体现了这种能力。有关 pip 配置机制的详细信息,请参阅 here。
从 pip 20.1 开始,pip 有一个 pip cache
命令来管理 pip 缓存的内容。
ERROR: No matching packages
但我已经安装了很多不同的包
pip cache list
如果它没有显示任何内容,而不是您没有缓存任何内容。
pip cache purge
和 pip cache list
建议缓存为空,但 du -hs ~/.cache/pip
显示 242MB。
pip config set global.cache-dir false
中有错字。它应该是 pip config set global.no-cache-dir false
。
ERROR: unknown command "cache" - maybe you meant "check"
来自 https://pip.pypa.io/en/latest/reference/pip_install.html#caching 的文档:
从 v6.0 开始,pip 提供了一个默认缓存,其功能类似于 Web 浏览器。虽然默认情况下缓存处于打开状态并且默认情况下被设计为正确的事情,但您可以禁用缓存并始终使用 --no-cache-dir 选项访问 PyPI。
pip 可以安装忽略缓存的包,像这样
pip --no-cache-dir install scipy
Since pip 20.1b1,于 2020 年 4 月 21 日发布并“添加了 pip cache
命令用于检查/管理 pip 的车轮缓存”,可以发出以下命令:
pip cache purge
参考指南在这里:
https://pip.pypa.io/en/stable/reference/pip_cache/
对应的 pull request is here。
ERROR: unknown command "cache" - maybe you meant "check"
pip install --upgrade pip
或 pip3 install --upgrade pip
。
pip
之后,我也会收到错误 ERROR: unknown command "cache" - maybe you meant "check"
在 Ubuntu 上,我必须删除 /tmp/pip-build-root
。
/tmp/pip_build_root/
(注意下划线)
如果您想默认设置 --no-cache-dir
选项,可以将其放入 pip.conf:
[global]
no-cache-dir = false
注意 1: 令人困惑,但要启用 no-cache-dir
选项,您实际上必须将其设置为 false
。如果你问我,这很愚蠢……但就是这样。有一个 github issue 可以解决此问题。
注意 2: pip.conf
的位置取决于您的操作系统。有关详细信息,请参阅 documentation。
我刚刚遇到了类似的问题,发现让 pip 升级软件包的唯一方法是删除之前未完成的安装或之前版本的 $PWD/build
(Windows 上为 %CD%\build
)目录pip(它现在在成功安装后删除构建目录)。
在 archlinux pip 缓存位于 ~/.cache/pip 上,我可以通过删除其中的 http 文件夹来解决我的问题。
在我的 Mac 上,我必须删除缓存目录 ~/Library/Caches/pip/
简单地
rm -d -r "$(pip cache dir)"
在 Windows 7 上,我必须删除 %HOMEPATH%/pip
。
如果使用 virtualenv,请在您的环境根目录下查找 build
目录。
我不得不在 Windows 7 上删除 %TEMP%\pip-build
(pyvenv.d) jdoe$ pip --version # pip version for this answer (or newer).
pip 21.1.1
(pyvenv.d) jdoe$ pip cache --help # Review all options available to you.
(pyvenv.d) jdoe$ pip cache dir # Cache-directory for pip(1).
/home/jdoe/.cache/pip
(pyvenv.d) jdoe$ pip cache purge # Purge cache-directory (by example).
Files removed: 621 # If cache-directory is already empty, the
# output will be: "ERROR: No matching packages".
在 Mac OS (Mavericks) 上,我必须删除 /tmp/pip-build/
更好的方法是删除缓存并重建它。这样,如果你再次为其他virtualenv安装它,它会使用缓存而不是每次安装时都构建它。
例如,当你安装它时,它会说它使用缓存轮,
Processing <some_prefix>/Library/Caches/pip/wheels/d0/c4/e4/e49fd07bca8dda00dd6b4bbc606aa05a25aacb00d45747a47a/horovod-0.19.3-cp37-cp37m-macosx_10_9_x86_64.wh
只需删除那个并重新开始安装。
(...) 看来 pip 正在重新使用缓存 (...)
我很确定这不是正在发生的事情。 Pip 曾经(错误地)重用构建目录而不是缓存。 This was fixed in version 1.4 of pip 于 2013 年 7 月 23 日发布。
$TMPDIR
中的 pip 相关目录