PIP使用不正确的缓存包版本,而不是用户指定的版本

我需要安装psycopg2 v2.4.1。我不小心做到了:

 pip install psycopg2

而不是:

 pip install psycopg2==2.4.1

这将安装2.4.4而不是早期版本。

现在,即使在我卸载psycopg2并尝试使用正确的版本重新安装之后,pip似乎正在重新使用它第一次下载的缓存。

如何强制pip清除其下载缓存并使用我在命令中包含的特定版本?

902534 次浏览

如果使用pip 6.0或更新版本,请尝试添加--no-cache-dir选项()。

如果使用pip 6.0以上的版本,则使用pip install -U pip升级它。

我刚刚遇到了类似的问题,并且发现让pip升级包的唯一方法是删除$PWD/build(在Windows上是%CD%\build)目录,该目录可能是以前未完成的安装或pip的以前版本遗留下来的(它现在在成功安装后删除构建目录)。

在Ubuntu上,我必须删除/tmp/pip-build-root

在Windows 7上,我必须删除%HOMEPATH%/pip

如果使用virtualenv,请在环境根目录下查找build目录。

在Mac OS (Mavericks)上,我不得不删除/tmp/pip-build/

我不得不在Windows 7上删除%TEMP%\pip-build

来自https://pip.pypa.io/en/latest/reference/pip_install.html#caching的文档:

从v6.0开始,pip提供了一个默认缓存 功能类似于web浏览器。而缓存是通过 默认和被设计做正确的事情,默认你可以禁用 缓存,并始终使用--no-cache-dir访问PyPI 选择。< / p >

PIP可以安装一个忽略缓存的包,就像这样

pip --no-cache-dir install scipy

在archlinux上pip缓存位于~/。缓存/pip,我可以通过删除其中的http文件夹来解决我的问题。

在我的mac上,我必须删除缓存目录~/Library/Caches/pip/

在适合您的系统的位置清除缓存目录

Linux和Unix

~/.cache/pip  # and it respects the XDG_CACHE_HOME directory.

OS X

~/Library/Caches/pip

窗户

%LocalAppData%\pip\Cache

更新

使用pip 20.1或更高版本,您可以通过在命令行中键入以下命令轻松找到操作系统的完整路径:

pip cache dir

Ubuntu安装的输出示例:

➜ pip3 cache dir
/home/tawanda/.cache/pip

(…)显示PIP正在重新使用缓存(…)

我很确定事情不是这样的。Pip曾经(错误地)重用构建目录而不是缓存。这在pip的1.4版中得到了修复发布于2013-07-23。

如果你想默认设置--no-cache-dir选项,你可以把它放在pip.conf中:

[global]
no-cache-dir = false

这很令人困惑,但是对于启用no-cache-dir选项,你实际上必须将它设置为false。如果你问我,我觉得这很傻…但事实就是这样。有一个github的问题来修复这个问题。

pip.conf的位置取决于你的操作系统。更多信息请参见文档

从pip 20.1b1开始,在2020年4月21日发布,“增加了pip cache命令用于检查/管理pip的车轮缓存”,可以发出这个命令:

pip cache purge

参考指南在这里:
# EYZ0 < br > 对应的这里是拉请求.

.

使用pip 20.1或更高版本,您可以执行以下操作:

  • pip cache remove matplotlib:从pip的缓存中删除与matplotlib相关的所有wheel文件。
  • pip cache purge:清除pip缓存中的所有wheel文件。
  • pip cache dir:获取缓存的位置。

如果你因为某些原因不想使用pip缓存(根据官方文件,这是一个坏主意),你的选择是:

  • pip install --no-cache-dir <package>:在不使用缓存的情况下安装包。
  • pip config set global.no-cache-dir false:配置pip不使用“全局”缓存;(在所有命令中)。

关于这个问题的一些历史:

“由于缓存而安装错误版本”的具体问题;问题中提到的问题已在2013年的PIP 1.4中修复!)

修复了一些与清理和不重用构建目录相关的问题。(#413, #709, #634, #602, #939, #865, #948)

自从pip 6.0以来(早在2014年!),pip installpip downloadpip wheel命令可以被告知避免使用--no-cache-dir选项的缓存。(例如# EYZ4)

在当时,传递--no-cache-dir是避免这个错误的唯一选项。所以…有点不幸的是,这是“pip缓存删除”的搜索结果。:)

自pip 10.0(早在2018年!)以来,添加了pip config命令,可用于将pip配置为始终忽略缓存。这总是可以通过手动编辑相关文件来实现,但这使命令行具有了这种能力。关于pip的配置机制的详细信息可以在在这里中找到。

从pip 20.1开始,pip有一个pip cache命令来管理pip缓存的内容。

更好的方法是删除缓存并重新构建它。通过这种方式,如果您为其他virtualenv再次安装它,它将使用缓存,而不是每次安装时都构建缓存。

例如,当你安装它时,它会说它使用缓存转盘,

Processing <some_prefix>/Library/Caches/pip/wheels/d0/c4/e4/e49fd07bca8dda00dd6b4bbc606aa05a25aacb00d45747a47a/horovod-0.19.3-cp37-cp37m-macosx_10_9_x86_64.wh

只需删除该文件并重新启动安装。

简单的

rm -d -r "$(pip cache dir)"
(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".