2012-04-26 6 views
53

Wie verhindern Sie, dass PIP zuvor heruntergeladene Pakete erneut herunterlädt? Ich teste die Installation von Matplotlib, ein 11MB-Paket, das von verschiedenen Distributions-spezifischen Paketen abhängt. Jedes Mal, wenn ich pip install matplotlib starte, wird Matplotlib erneut heruntergeladen. Wie höre ich damit auf?So können Sie heruntergeladene PIP-Pakete zwischenspeichern

Antwort

54

Sie können eine bestimmte Umgebungsvariable PIP_DOWNLOAD_CACHE verwenden und auf ein Verzeichnis zeigen, in dem Ihre Pakete gespeichert werden. Wenn sie erneut installiert werden sollen, werden sie aus diesem Verzeichnis genommen.

Es scheint auch eine zusätzliche Option für PIP pip --download-cache zu geben, die etwas ähnliches tun sollte, aber ich habe es nie selbst ausprobiert. Für Ihr Beispiel erneute Herunterladen matplotlib jedes Mal zu vermeiden, würden Sie wie folgt vor:

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

Ist das Ihre Frage beantworten?

+0

Ich bin mir nicht sicher, ob PIP es auch tut, aber mit ' easy_install' Wenn Sie das Paket als '.tar' (oder vermutlich zip?) Datei im lokalen Verzeichnis haben, wird es versuchen, dieses zuerst zu benutzen. –

+2

Schauen Sie sich auch [pip-accel] (https://pypi.python.org/pypi/pip-accel) an. Es ist eine neue und bessere Lösung für dieses Problem. – qris

+8

ab pip 8 '--download-cache' wurde gelöscht, pip sollte standardmäßig Cache verwenden, der mit' --no-cache-dir' ausgeschaltet werden kann – Ski

8

Sie könnten

# 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 

Auch könnten Sie das Paket manuell herunterladen

pip install -d dir_for_packages matplotlib 

Dann installieren Sie es von un-tar und python setup install später.

Die pip install --download-cache Arbeiten in ähnlicher Weise w/Extra-Kontrolle: es zunächst für die aktuelle oder angegebene Version des Ziel Pakets von Web-Suche, wenn das Sucher und wird Paket im Verzeichnis von download-cache angegebenen zwischengespeichert, der Im Cache gespeicherte Pakete werden anstelle des Herunterladens verwendet. Zum Beispiel

pip install --download-cache . pymongo 

wird heruntergeladen pymongo Paket zu aktuellen Verzeichnis:

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

für neue Pip Versionen:

Neuere Pip Versionen standardmäßig jetzt Cache-Downloads. Sehen Sie diese Dokumentation:

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

Für alte Pip Versionen:

Erstellen Sie eine Konfigurationsdatei ~/.pip/pip.conf genannt, und fügen Sie den folgenden Inhalt:

[global] 
download_cache = ~/.cache/pip 

In einem Befehl:

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

Cool, einfach und muss nicht daran denken, den Parameter hinzuzufügen jedes Mal. Ich habe eine Menge von Gb's Re-Download-Scheiße verschwendet. Vielen Dank. – erm3nda

+0

Vielen Dank, wenn Sie pip3 verwenden, um Anforderungen herunterzuladen und gelbe Textwarnung zu erhalten, können Sie mkdir ~/.cache/pip dann die Warnung weggehen. –

Verwandte Themen