2012-04-26 25 views
53

Làm cách nào để ngăn PIP tải xuống lại các gói đã tải xuống trước đó? Tôi đang thử nghiệm cài đặt của matplotlib, một gói 11MB phụ thuộc vào một số gói phân phối cụ thể. Mỗi khi tôi chạy pip install matplotlib, nó sẽ tải xuống lại matplotlib. Làm cách nào để ngăn chặn điều này?Cách lưu bộ nhớ cache các gói PIP đã tải xuống

Trả lời

54

Bạn có thể sử dụng biến môi trường cụ thể PIP_DOWNLOAD_CACHE và đặt trỏ đến thư mục nơi gói của bạn sẽ được lưu trữ. Nếu chúng được cài đặt lại, chúng sẽ được lấy từ thư mục này.

Dường như cũng có một tùy chọn bổ sung cho PIP pip --download-cache mà nên làm điều gì đó tương tự, nhưng tôi chưa bao giờ thử bản thân mình. Ví dụ của bạn, để tránh tái tải matplotlib mọi thời gian, bạn sẽ làm như sau:

pip install --download-cache /path/to/pip/cache matplotlib 

Điều đó trả lời câu hỏi của bạn?

+0

Tôi không chắc PIP có thực hiện điều đó hay không, nhưng với ' easy_install' nếu bạn có gói như một tệp '.tar' (hoặc có lẽ là zip?) trong thư mục cục bộ, nó sẽ cố gắng sử dụng gói đó trước tiên. –

+2

Hãy xem [pip-accel] (https://pypi.python.org/pypi/pip-accel). Đó là một giải pháp mới và tốt hơn cho vấn đề này. – qris

+8

do pip 8 '--download-cache' bị loại bỏ, pip nên sử dụng bộ nhớ cache theo mặc định có thể được tắt bằng' --no-cache-dir' – Ski

8

Bạn có thể

# download and extract package to build path 
pip install --no-install matplotlib 

# the build path could be found by 
pip install --help|grep Unpack\ packages\ into -A 2 

# then rm pip-delete-this-directory.txt inside the build path 
# this prevent pip from removing package from the build directory after install 
# you could check the content of the file 
rm build/pip-delete-this-directory.txt 

# from now on you could install matplotlib quickly 
# this uses single build directory 
# and can speed up compiling by caching intermediate objects. 
pip install --no-download matplotlib 

Ngoài ra, bạn có thể tự tải về các gói

pip install -d dir_for_packages matplotlib 

Sau đó cài đặt nó bằng cách bỏ tar và python setup install sau.

Các pip install --download-cache tác phẩm theo cách tương tự w/thêm kiểm tra: nó trước hết là tìm kiếm phiên bản mới nhất hoặc theo quy định của gói mục tiêu từ web, nếu tìm kiếm có kết quả và có được lưu trữ gói trong thư mục chỉ định bởi download-cache, các gói được lưu trong bộ nhớ cache sẽ được sử dụng thay vì tải xuống. Ví dụ,

pip install --download-cache . pymongo 

sẽ tải pymongo gói vào thư mục hiện tại:

http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpymongo%2Fpymongo-2.1.1.tar.gz 
http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpymongo%2Fpymongo-2.1.1.tar.gz.content-type 
106

Đối với phiên bản Pip mới:

Mới hơn Pip phiên bản theo mặc định hiện nay tải bộ nhớ cache. Xem tài liệu này:

https://pip.pypa.io/en/stable/reference/pip_install/#caching

Đối với phiên bản Pip cũ:

Tạo một file cấu hình tên ~/.pip/pip.conf, và thêm các nội dung sau:

[global] 
download_cache = ~/.cache/pip 

Trong một lệnh:

printf '[global]\ndownload_cache = ~/.cache/pip\n' >> ~/.pip/pip.conf 
+0

Mát mẻ, dễ dàng và không cần phải nhớ thêm tham số mỗi lần. Tôi lãng phí một LOT của Gb tải lại shit. Cảm ơn bạn. – erm3nda

+0

Cảm ơn bạn, nếu bạn sử dụng pip3 để tải xuống yêu cầu và nhận cảnh báo văn bản màu vàng, bạn có thể mkdir ~/.cache/pip sau đó cảnh báo sẽ biến mất. –

Các vấn đề liên quan