2012-04-26 16 views
53

Come si impedisce a PIP di scaricare nuovamente i pacchetti scaricati in precedenza? Sto testando l'installazione di matplotlib, un pacchetto da 11 MB che dipende da diversi pacchetti distro specifici. Ogni volta che eseguo pip install matplotlib, viene nuovamente scaricato matplotlib. Come lo fermo?Come memorizzare nella cache i pacchetti PIP scaricati

risposta

54

È possibile utilizzare una variabile di ambiente specifica PIP_DOWNLOAD_CACHE e fare in modo che punti a una directory in cui verranno memorizzati i pacchetti. Se devono essere nuovamente installati, verranno presi da questa directory.

Sembra esserci anche un'opzione aggiuntiva per PIP pip --download-cache che dovrebbe fare qualcosa di simile, ma non l'ho mai provato da solo. Per il vostro esempio, per evitare nuovamente il download matplotlib ogni volta, si dovrebbe effettuare le seguenti operazioni:

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

Ritiene che la risposta alla tua domanda?

+0

Non sono sicuro che PIP lo faccia, ma con ' easy_install' se hai il pacchetto come file '.tar' (o presumibilmente zip?) nella directory locale cercherà di usarlo per primo. –

+2

Guarda pure [pip-accel] (https://pypi.python.org/pypi/pip-accel). È una nuova e migliore soluzione a questo problema. – qris

+8

come da pip 8 '--download-cache' è stato eliminato, pip dovrebbe utilizzare la cache per impostazione predefinita che può essere disattivata con' --no-cache-dir' – Ski

8

Si potrebbe

# 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 

Inoltre, è possibile scaricare manualmente il pacchetto

pip install -d dir_for_packages matplotlib 

quindi installarlo dal non-catrame e python setup install tardi.

I pip install --download-cache funziona in modo simile w/controllo in più: è in primo luogo cercare l'ultima o specificato versione del pacchetto di destinazione dal web, se la ricerca ha risultato e non viene memorizzato nella cache del pacchetto nella directory specificata da download-cache, il il pacchetto memorizzato nella cache verrà utilizzato al posto del download. Ad esempio,

pip install --download-cache . pymongo 

scaricherà pymongo pacchetto directory corrente:

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

Per le nuove versioni Pip:

recenti versioni Pip di default ora download di cache. Vedere questa documentazione:

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

Per le vecchie versioni Pip:

Creare un file di configurazione chiamato ~/.pip/pip.conf, e aggiungere i seguenti contenuti:

[global] 
download_cache = ~/.cache/pip 

In un solo comando:

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

Freddo, facile e non è necessario ricordare di aggiungere il parametro ogni volta. Ho sprecato un sacco di Gb per il re-download di merda. Grazie. – erm3nda

+0

Grazie, se usi pip3 per scaricare i requisiti e ricevere l'avviso di testo giallo, puoi mkdir ~/.cache/pip quindi l'avviso andrà via. –

Problemi correlati