Xóa bộ nhớ cache của pip?


443

Tôi cần cài đặt psycopg2 v2.4.1 một cách cụ thể. Tôi đã vô tình làm:

 pip install psycopg2

Thay vì:

 pip install psycopg2==2.4.1

Đó là cài đặt 2.4.4 thay vì phiên bản trước.

Bây giờ ngay cả sau khi tôi gỡ cài đặt psycopg2 và cố gắng cài đặt lại với phiên bản chính xác, có vẻ như pip đang sử dụng lại bộ đệm mà nó đã tải xuống lần đầu tiên.

Làm cách nào tôi có thể buộc pip xóa bộ nhớ cache tải xuống của nó và sử dụng phiên bản cụ thể mà tôi có trong lệnh?


4
Câu trả lời cập nhật nhất hiện nay (được đăng bởi một người duy trì pip) là stackoverflow.com/a/61762308/1931274 .
pradyunsg

Câu trả lời:


507

Nếu sử dụng pip 6.0 hoặc mới hơn, hãy thử thêm --no-cache-dirtùy chọn .

Nếu sử dụng pip cũ hơn pip 6.0, hãy nâng cấp nó với pip install -U pip.


8
Tôi nhìn vào ~ / .pip nhưng nó là một thư mục trống. Mẹo của bạn về - cài đặt sẵn đã thực hiện các mẹo!
Geuis

7
Trên OSX, tôi đã phải xóa các thư mục liên quan đến pip trong$TMPDIR
Bryan P

2
Nếu sử dụng virtualenv, bạn có thể phải xóa envs / {yourenvsname} / build / {packrowestion} dir ...
Vajk Hermecz

6
Trong windows: Tôi đã thấy thư mục bộ nhớ đệm pip nằm trong ~ \ AppData \ Local \ pip \ cache
Mercury

2
Bạn phải làm python -m pip install -U piptrên Windows. (Nó không thể nâng cấp do khóa pip.exetệp khác.)
jpmc26

456

Xóa thư mục bộ đệm khi thích hợp cho hệ thống của bạn

Linux và Unix

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

Hệ điều hành X

~/Library/Caches/pip

các cửa sổ

%LocalAppData%\pip\Cache

6
Đó là điều mà ba câu trả lời hàng đầu không thực sự trả lời câu hỏi, và đây là câu trả lời đầu tiên.
AmphotericLewisAcid

Câu trả lời cập nhật nhất hiện nay (được đăng bởi một người duy trì pip) là stackoverflow.com/a/61762308/1931274 . Cách tiếp cận tốt nhất bây giờ là pip cache purge.
pradyunsg

104

Từ tài liệu tại https://pip.pypa.io/en/latest/reference/pip_install.html#caching :

Bắt đầu với v6.0, pip cung cấp bộ đệm theo mặc định có chức năng tương tự như trình duyệt web. Mặc dù bộ đệm được bật theo mặc định và được thiết kế để thực hiện đúng theo mặc định, bạn có thể tắt bộ đệm và luôn truy cập PyPI bằng cách sử dụng --no-cache-dir tùy chọn.


2
Đây là câu trả lời đúng ... liên kết cũng cho thấy pip lấy bộ nhớ cache trên Linux, Windows & OS X.
jasonjwwilliams

3
Và để thêm, nếu bạn muốn xóa đối tượng "xấu" khỏi bộ đệm của mình, hãy xem trang để tìm vị trí của tệp bộ đệm và "tìm" gói vi phạm. Linux là ~ / .cache / pip, Mac là ~ / Library / Caches / pip, v.v. máy chủ của tôi
Chris Cogdon

78

Pip có thể cài đặt một gói bỏ qua bộ đệm, như thế này

pip --no-cache-dir install scipy

7
Câu trả lời của @ dafeda cung cấp thông tin tương tự 4 tháng trước
Foon


17

(bảo trì pip ở đây!)

Kể từ pip 6.0 (trở lại vào năm 2014!) pip install,,pip downloadpip wheelcác lệnh có thể được yêu cầu tránh sử dụng bộ đệm với --no-cache-dirtùy chọn. (ví dụ pip install --no-cache-dir <package>:)

Kể từ pip 10.0 (trở lại vào năm 2018!), Một pip config lệnh đã được thêm vào, có thể được sử dụng để định cấu hình pip để luôn bỏ qua bộ đệm - pip config set global.cache-dir falsecấu hình pip để không sử dụng bộ đệm "toàn cầu" (nghĩa là trong tất cả các lệnh).

Kể từ pip 20.1, pip có một pip cache lệnh quản lý nội dung của bộ đệm của pip.

  • pip cache purge loại bỏ tất cả các tập tin bánh xe trong bộ nhớ cache.
  • pip cache remove matplotlib chọn lọc loại bỏ các tập tin liên quan đến matplotlib khỏi bộ đệm.

Tóm lại, pip cung cấp rất nhiều cách để điều chỉnh cách sử dụng bộ đệm:

  • pip install --no-cache-dir <package>: cài đặt gói mà không sử dụng bộ đệm, chỉ cho lần chạy này.
  • pip config set global.cache-dir false: cấu hình pip để không sử dụng bộ đệm "toàn cầu" (trong tất cả các lệnh)
  • pip cache remove matplotlib: xóa tất cả các tệp bánh xe liên quan đến matplotlib khỏi bộ đệm của pip.
  • pip cache purge: để xóa tất cả các tệp khỏi bộ đệm của pip.

Vấn đề cụ thể về "cài đặt phiên bản sai do bộ nhớ đệm" được đề cập trong câu hỏi đã được khắc phục trong pip 1.4 (trở lại năm 2013!):

Khắc phục một số vấn đề liên quan đến dọn dẹp và không sử dụng lại các thư mục xây dựng. (# 413, # 709, # 634, # 602, # 939, # 865, # 948)


10

Nếu bạn muốn đặt --no-cache-dirtùy chọn theo mặc định, bạn có thể đặt tùy chọn này vào pip.conf:

[global]
no-cache-dir = false

Vị trí của pip.confphụ thuộc vào hệ điều hành của bạn. Xem tài liệu để biết thêm.


9

Tôi chỉ gặp một vấn đề tương tự và thấy rằng cách duy nhất để có được nâng cấp gói là xóa thư mục $PWD/build( %CD%\buildtrên Windows) có thể còn sót lại từ bản cài đặt chưa hoàn thành trước đó hoặc phiên bản trước đó của pip (hiện tại nó đã xóa xây dựng thư mục sau khi cài đặt thành công).


6

Trên bộ đệm pip archlinux được đặt tại ~ / .cache / pip, tôi có thể giải quyết vấn đề của mình bằng cách xóa thư mục http bên trong nó.


6

Trên máy mac của tôi, tôi phải xóa thư mục cache ~/Library/Caches/pip/




3

Nếu sử dụng virtualenv, hãy tìm buildthư mục bên dưới root môi trường của bạn.


3

Tôi đã phải xóa% TEMP% \ pip-build Trên Windows 7


1
Cảm ơn + 1. Tôi cũng đang sử dụng Windows 7 và tìm thấy thư mục trong thư mục% TEMP% \ pip của mình. % TEMP% được xác định trong các biến môi trường của bạn nếu có ai không chắc chắn.
Simon


0

Một cách tốt hơn để làm điều đó là xóa bộ nhớ cache và xây dựng lại nó. Theo cách này, nếu bạn cài đặt lại cho virtualenv khác, nó sẽ sử dụng bộ đệm thay vì xây dựng mỗi khi bạn cài đặt nó.

Ví dụ, khi bạn cài đặt nó, nó sẽ nói nó sử dụng bánh xe được lưu trữ,

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

Chỉ cần xóa cái đó và khởi động lại cài đặt của bạn.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.