Удаление кеша пипса?

443

Мне нужно установить psycopg2 v2.4.1 специально. Я случайно сделал:

 pip install psycopg2

Вместо:

 pip install psycopg2==2.4.1

Это устанавливает 2.4.4 вместо более ранней версии.

Теперь даже после того, как я удалю pip psycopg2 и попытаюсь переустановить с правильной версией, похоже, что pip повторно использует кэш, который он загрузил в первый раз.

Как заставить pip очистить кеш загрузки и использовать конкретную версию, которую я включаю в команду?

Geuis
источник
4
Текущий самый актуальный ответ (опубликованный сопровождающим pip): stackoverflow.com/a/61762308/1931274 .
pradyunsg

Ответы:

507

Если вы используете pip 6.0 или новее, попробуйте добавить --no-cache-dirопцию .

Если вы используете pip старше pip 6.0, обновите его до pip install -U pip.

sholsapp
источник
8
Я посмотрел в ~ / .pip, но это пустой каталог. Ваш совет по --ignore-installed сделал свое дело!
Geuis
7
На OSX мне пришлось удалить связанные с pip каталоги в$TMPDIR
Bryan P
2
Если вы используете virtualenv, вам, возможно, придется удалить envs / {yourenvsname} / build / {packageinquestion} dir ...
Вайк Хермеч
6
В Windows: я видел, что каталог кэширования pip находится в ~ \ AppData \ Local \ pip \ cache
Mercury
2
Вы должны сделать python -m pip install -U pipна Windows. (Он не может обновиться из-за блокировки pip.exeфайла в противном случае.)
jpmc26
456

Очистите каталог кэша, где это необходимо для вашей системы

Linux и Unix

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

OS X

~/Library/Caches/pip

Windows

%LocalAppData%\pip\Cache
Доктор манхэттен
источник
6
Это безумие, что первые три ответа на самом деле не отвечают на вопрос, и это первый ответ.
AmphotericLewisAcid
1
Текущий самый актуальный ответ (опубликованный сопровождающим pip): stackoverflow.com/a/61762308/1931274 . Лучший подход сейчас pip cache purge.
pradyunsg
104

Из документации по адресу https://pip.pypa.io/en/latest/reference/pip_install.html#caching :

Начиная с версии 6.0, pip предоставляет кеш по умолчанию, который работает так же, как и в веб-браузере. Хотя кеш включен по умолчанию и предназначен для правильной работы по умолчанию, вы можете отключить кеш и всегда получать доступ к PyPI, используя эту --no-cache-dir опцию.

dafeda
источник
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
Yihe
источник
7
Ответ @ dafeda предоставляет ту же информацию 4 месяца назад
Foon
30

На Ubuntu мне пришлось удалить /tmp/pip-build-root.

Джейс Браунинг
источник
2
На самом деле / ​​tmp / pip-build-% username_that_running_pip%
Алексей Свиридов
2
На Ubuntu 14 это было /tmp/pip_build_root/(примечание подчеркивает)
Эмиль Стенстрём
19

(Пиппер здесь!)

Так как пип 6.0 (обратно в 2014 году!), pip install, pip 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 удаляет все файлы колеса в кеше.
  • pip cache remove matplotlib выборочно удаляет файлы, связанные с matplotlib из кеша.

Таким образом, pip предоставляет множество способов настроить использование кэша:

  • pip install --no-cache-dir <package>: установить пакет без использования кэша, только для этого запуска.
  • pip config set global.cache-dir false: настроить pip, чтобы не использовать кеш "глобально" (во всех командах)
  • pip cache remove matplotlib: удаляет все файлы колеса, связанные с matplotlib, из кэша pip.
  • pip cache purge: очистить все файлы из кэша pip.

Проблема, связанная с «установкой неправильной версии из-за кэширования», упомянутая в вопросе, была исправлена ​​в пипе 1.4 (еще в 2013 году!):

Исправьте ряд проблем, связанных с очисткой и не повторным использованием директорий сборки. (№ 413, № 709, № 634, № 602, № 939, № 865, № 948)

pradyunsg
источник
У меня pip 20.1.1, но когда я пытаюсь очистить pip cache, я получаю следующую ошибку: ERROR: No matching packagesно я уже установил много разных пакетов
Mikhail_Sam
10

Если вы хотите установить --no-cache-dirопцию по умолчанию, вы можете поместить это в pip.conf:

[global]
no-cache-dir = false

Расположение pip.confзависит от вашей ОС. Смотрите документацию для получения дополнительной информации.

Rotareti
источник
9

У меня просто была похожая проблема, и я обнаружил, что единственный способ получить пакет pip для обновления пакета - это удалить каталог $PWD/build( %CD%\buildв Windows), который мог остаться из ранее незаконченной установки или предыдущей версии pip (теперь он удаляет сборка каталогов после успешной установки).

dhobbs
источник
6

На archlinux pip кеш находится в ~ / .cache / pip, я мог бы решить мою проблему, удалив внутри него папку http.

eneepo
источник
6

На моем Mac мне пришлось удалить каталог кеша ~/Library/Caches/pip/

matlads
источник
5

Поскольку пип 20.1b1 , выпущенный 21 апреля 2020 года, и «добавленная pip cacheкоманда для проверки / управления кэшем колес пипса», можно выполнить эту команду:

pip cache purge

Справочное руководство находится здесь:
https://pip.pypa.io/en/stable/reference/pip_cache/
Соответствующий запрос на получение ответа здесь .

Бенс Меликути
источник
4

На Windows 7 мне пришлось удалить %HOMEPATH%/pip.

Джейс Браунинг
источник
3

Если вы используете virtualenv, найдите buildкаталог в корневом каталоге вашей среды.

Вайк Хермеч
источник
3

Мне пришлось удалить% TEMP% \ pip-build в Windows 7

Михаил М
источник
1
Благодаря + 1. Я также использую Windows 7 и нашел папку в папке% TEMP% \ pip. % TEMP% определяется в ваших переменных среды, если кто-то не уверен.
Симон
2

В Mac OS (Mavericks) мне пришлось удалить /tmp/pip-build/

Марсело Соареш
источник
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

Просто удалите его и перезапустите установку.

Izana
источник
-2

(...) похоже, что pip повторно использует кеш (...)

Я уверен, что это не то, что происходит. Пип использовал (неправильно) повторно использовать каталог сборки, а не кеш. Это было исправлено в версии 1.4 pip, выпущенной 2013-07-23.

Петр Доброгост
источник