Come utilizzare il pip di Python per scaricare e conservare i file zippati per un pacchetto?


105

Se voglio usare il pipcomando per scaricare un pacchetto (e le sue dipendenze), ma mantenere tutti i file compressi che vengono scaricati (diciamo, django-socialregistration.tar.gz) - c'è un modo per farlo?

Ho provato varie opzioni della riga di comando, ma sembra sempre decomprimere ed eliminare il file zip, oppure ottiene il file zip, ma solo per il pacchetto originale, non per le dipendenze.

Risposte:


78

pip install --downloadè deprecato. A partire dalla versione 8.0.0 dovresti usare il pip downloadcomando:

 pip download <package-name>

3
e come installare successivamente i pacchetti scaricati?
knocte

2
Questa è la risposta più aggiornata. Grazie
KJ50

3
@knoctepip install path-to-downloaded-package
Anton Khodak

5
l'ho provato qualche giorno fa e penso che abbia provato ancora a recuperare i deps da internet invece di usare quelli scaricati; IIRC, ho dovuto usaresudo pip install <path-to-downloaded-package> --no-index --find-links `pwd`
knocte

3
Nota che pip downloadsupporta anche in -r requirements.txtmodo da poterli scaricare facilmente da un computer connesso a Internet, quindi copiarli su un computer offline e installare come menzionato dai commentatori sopra
Hawkins

113

L' --download-cacheopzione dovrebbe fare quello che vuoi:

pip install --download-cache="/pth/to/downloaded/files" package

Tuttavia, quando l'ho testato, il pacchetto principale è stato scaricato, salvato e installato correttamente, ma le dipendenze sono state salvate con il loro percorso URL completo come nome - un po 'fastidioso, ma tutti i tar.gzfile erano lì.

L' --downloadopzione scarica il pacchetto principale e le sue dipendenze e non ne installa nessuno. ( Notare che prima della versione 1.1 l' --downloadopzione non scaricava le dipendenze.)

pip install package --download="/pth/to/downloaded/files"

La pipdocumentazione descrive l'utilizzo --downloadper installazioni veloci e locali .


5
Bello, in effetti ha funzionato, anche se ho contrassegnato --no-installun'opzione su. E hai ragione sui nomi dei file funky, ma almeno i file ci sono .
John C

l'ultima volta che ho controllato, l' --downloadopzione scarica il pacchetto con le dipendenze.
Mohammad Niknam

3
--download-cache è deprecato. usa pip install --download <dir> <pkg>
ostler.c

18
pip install --downloadè ora deprecato e verrà rimosso da pip 10. pip.pypa.io/en/latest/reference/pip_download/#overview . Usa pip download somepackage.
Sнаđошƒаӽ

17
Nello specifico, il nuovo equivalente èpip download -d <dir> { -r requirements.txt | <packagename> }
rrauenza

57

Lo faccio sempre per scaricare i pacchetti:

pip install --download /path/to/download/to_packagename

O

pip install --download=/path/to/packages/downloaded -r requirements.txt

E quando voglio installare tutte quelle librerie che ho appena scaricato, faccio questo:

pip install --no-index --find-links="/path/to/downloaded/dependencies" packagename

O

pip install --no-index --find-links="/path/to/downloaded/packages" -r requirements.txt


Aggiornare

Inoltre, per ottenere tutti i pacchetti installati su un sistema, puoi esportarli tutti in requirement.txtquello che verrà utilizzato per installarli su un altro sistema, lo facciamo:

pip freeze > requirement.txt

Quindi, requirement.txtpuò essere utilizzato come sopra per il download o farlo per installarli da requirement.txt:

pip install -r requirement.txt

RIFERIMENTO: pip installer


6

Nella versione 7.1.2 pip scarica la ruota di un pacchetto (se disponibile) con quanto segue:

pip install package -d /path/to/downloaded/file

Quanto segue scarica una distribuzione sorgente:

pip install package -d /path/to/downloaded/file --no-binary :all:

Questi scaricano anche le dipendenze, se pip ne è a conoscenza (ad esempio, se le pip show packageelenca).


Aggiornare

Come notato da Anton Khodak , il pip downloadcomando è preferito dalla versione 8. Negli esempi precedenti questo significa che /path/to/downloaded/filedeve essere fornito con l'opzione -d, quindi sostituire installcon downloadfunziona.


Devo sviluppare in Windows e distribuire su RH7 senza alcuna connessione Internet. Quindi scarico i pacchetti sorgente con --no-binary: all:. Tuttavia questo fallisce quando si raccoglie django-pyodbc-azure == 2.0.4.1 poiché questo pacchetto non ha origine. C'è un modo per scaricare il sorgente o, se questo non esiste, per scaricare il weehl?
cwhisperer

6

Utilizzare pip download <package1 package2 package n>per scaricare tutti i pacchetti comprese le dipendenze

Utilizzare pip install --no-index --find-links . <package1 package2 package n>per installare tutti i pacchetti comprese le dipendenze. Ottiene tutti i file da CWD. Non scaricherà nulla


2

pip wheel è un'altra opzione che dovresti considerare:

pip wheel mypackage -w .\outputdir

Scaricherà i pacchetti e le loro dipendenze in una directory (directory di lavoro corrente per impostazione predefinita), ma esegue il passaggio aggiuntivo di convertire qualsiasi pacchetto sorgente in ruote.

Supporta comodamente i file dei requisiti:

pip wheel -r requirements.txt -w .\outputdir

Aggiungi l' --no-depsargomento se desideri solo i pacchetti specificatamente richiesti:

pip wheel mypackage -w .\outputdir --no-deps

0

Preferirei (RHEL) - pip download package==version --no-deps --no-binary=:all:


-1

installazione di pacchetti Python offline

Per utenti Windows :

Per scaricare in un file, apri il tuo cmd e segui questo:

cd <*the file-path where you want to save it*>

pip download <*package name*>

il pacchetto e le dipendenze verranno scaricati nella directory di lavoro corrente.

Per installare dalla directory di lavoro corrente:

imposta la cartella in cui hai scaricato come cwd, quindi segui questi:

pip install <*the package name which is downloded as .whl*> --no-index --find-links <*the file locaation where the files are downloaded*>

questo cercherà le dipendenze in quella posizione.


se non si specifica la piattaforma, scaricherà i file per il sistema operativo corrente. Pertanto questo non funzionerà se installi i file scaricati su un altro sistema operativo
Prometheus
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.