删除点子的缓存?


441

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

 pip install psycopg2

代替:

 pip install psycopg2==2.4.1

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

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

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


3
当前最新答案(由pip维护者发布)是stackoverflow.com/a/61762308/1931274
pradyunsg

Answers:


507

如果使用的是pip 6.0或更高版本,请尝试添加该--no-cache-dir选项

如果使用的是pip 6.0之前的版本,请使用进行升级pip install -U pip


8
我看了〜/ .pip,但它是一个空目录。您在--ignore-installed上获得的提示可以解决问题!
Geuis 2012年

7
在OSX上,我不得不删除$TMPDIR
Bryan P

2
如果使用virtualenv,则可能必须删除envs / {yourenvsname} / build / {packageinquestion}目录...
Vajk Hermecz 2013年

6
在Windows中:我已经看到pip缓存目录位于〜\ AppData \ Local \ pip \ cache
Mercury

2
您必须python -m pip install -U pip在Windows上进行。(由于无法锁定pip.exe文件,因此无法升级。)
jpmc26

455

在适合您的系统的地方清除缓存目录

Linux和Unix

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

OS X

~/Library/Caches/pip

视窗

%LocalAppData%\pip\Cache

6
实在令人难以置信的是,前三个答案实际上并没有回答问题,而这是第一个答案。
AmphotericLewisAcid

当前最新答案(由pip维护者发布)是stackoverflow.com/a/61762308/1931274。现在最好的方法是pip cache purge
pradyunsg

104

https://pip.pypa.io/zh-CN/latest/reference/pip_install.html#caching的文档中:

从v6.0开始,pip提供了默认情况下的缓存,其功能类似于网络浏览器。默认情况下,当缓存处于打开状态并且被设计为默认时,您可以禁用缓存并始终通过使用该--no-cache-dir 选项来访问PyPI 。


2
这是正确的答案...链接也显示了PIP藏匿在Linux,Windows和OS X的高速缓存
jasonjwwilliams

3
并且要添加,如果要从缓存中删除“坏”对象,请查看页面以查找缓存文件的位置,然后“查找”有问题的程序包。Linux是〜/ .cache / pip,Mac是〜/ Library / Caches / pip,等等。有趣的是,psycopg2也是我的问题软件包,但这是因为现有软件包是为另一个Postgresql库编译的,而该库不再存在我的服务器。
克里斯·科登

78

pip可以安装一个忽略缓存的软件包,像这样

pip --no-cache-dir install scipy

7
@dafeda的答案提供了相同的信息4个月之前
Foon


15

(这里是点子维护者!)

由于PIP 6.0(后在2014年!) pip installpip download并且pip wheel命令可以告诉避免使用与高速缓存--no-cache-dir选项。(例如:pip install --no-cache-dir <package>

自pip 10.0(早在2018年!)以来,pip config添加了一个命令,该命令可用于将pip配置为始终忽略缓存- pip config set global.cache-dir false将pip配置为不“全局”使用缓存(即,在所有命令中)。

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

  • pip cache purge 删除缓存中的所有wheel文件。
  • pip cache remove matplotlib 有选择地从缓存中删除与matplotlib相关的文件。

总而言之,pip提供了许多调整缓存使用方式的方法:

  • pip install --no-cache-dir <package>:仅为此运行而无需使用缓存安装软件包。
  • pip config set global.cache-dir false:将pip配置为不“全局”使用缓存(在所有命令中)
  • pip cache remove matplotlib:从pip的缓存中删除所有与matplotlib相关的wheel文件。
  • pip cache purge:清除pip缓存中的所有文件。

问题中提到的“由于缓存而安装了错误版本”的特定问题已在pip 1.4中修复(早在2013年!):

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


10

如果您想--no-cache-dir默认设置选项,可以将其放入pip.conf

[global]
no-cache-dir = false

的位置pip.conf取决于您的操作系统。请参阅文档以获取更多信息。


9

我只是遇到了类似的问题,发现获取pip升级软件包的唯一方法是删除以前未完成的安装或先前版本的pip可能遗留下的$PWD/build%CD%\build在Windows上)目录(它现在删除了成功安装后生成目录)。


6

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






3

我必须在Windows 7上删除%TEMP%\ pip-build


1
谢谢+1。我也在使用Windows 7,并在我的%TEMP%\ pip文件夹下找到了该文件夹。如果有人不确定,请在您的环境变量中定义%TEMP%。
西蒙(Simon)


0

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

例如,当您安装它时,它将说它使用了缓存的滚轮,

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

只需删除该文件,然后重新开始安装即可。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.