¿Cómo usar el pip de Python para descargar y mantener los archivos comprimidos de un paquete?


105

Si quiero usar el pipcomando para descargar un paquete (y sus dependencias), pero conservar todos los archivos comprimidos que se descargan (por ejemplo, django-socialregistration.tar.gz), ¿hay alguna manera de hacerlo?

Probé varias opciones de línea de comandos, pero siempre parece descomprimir y eliminar el archivo zip, o obtiene el archivo zip, pero solo para el paquete original, no las dependencias.

Respuestas:


78

pip install --downloades obsoleto. A partir de la versión 8.0.0, debe usar el pip downloadcomando:

 pip download <package-name>

3
y cómo instalar los paquetes descargados más tarde?
Knocte el

2
Esta es la respuesta más actualizada. Gracias
KJ50

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

5
lo intenté hace algunos días y creo que todavía intentó recuperar los deptos de Internet en lugar de usar los descargados; IIRC, tuve que usarsudo pip install <path-to-downloaded-package> --no-index --find-links `pwd`
Knocte el

3
Tenga en cuenta que pip downloadtambién es compatible -r requirements.txtpara que pueda descargarlos fácilmente desde una máquina conectada a Internet, luego copiarlos a una máquina fuera de línea e instalar cómo mencionaron los comentaristas anteriores
Hawkins

113

La --download-cacheopción debe hacer lo que quieras:

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

Sin embargo, cuando probé esto, el paquete principal se descargó, guardó e instaló correctamente, pero las dependencias se guardaron con su ruta URL completa como nombre, un poco molesto, pero todos los tar.gzarchivos estaban allí.

La --downloadopción descarga el paquete principal y sus dependencias y no instala ninguno de ellos. ( Tenga en cuenta que antes de la versión 1.1 la --downloadopción no descargaba dependencias).

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

La pipdocumentación describe el uso --downloadpara instalaciones locales y rápidas .


5
Bien, eso funcionó, aunque marqué una --no-installopción. Y tiene razón sobre los nombres de archivo originales, pero al menos los archivos están ahí .
John C

la última vez que verifiqué, --downloadopción de descargar el paquete con dependencias.
Mohammad Niknam

3
--download-cache está en desuso. use pip install --download <dir> <pkg>
ostler.c

18
pip install --downloadahora está en desuso y se eliminará del pip 10. pip.pypa.io/en/latest/reference/pip_download/#overview . Utilice pip download somepackage.
Sнаđошƒаӽ

17
Concretamente, el nuevo equivalente espip download -d <dir> { -r requirements.txt | <packagename> }
rrauenza

57

Siempre hago esto para descargar los paquetes:

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

O

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

Y cuando quiero instalar todas esas bibliotecas que acabo de descargar, hago esto:

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


Actualizar

Además, para instalar todos los paquetes en un sistema, puede exportarlos todos a los requirement.txtque se usarán para instalarlos en otro sistema, hacemos esto:

pip freeze > requirement.txt

Luego, requirement.txtse puede usar como arriba para descargar, o hacer esto para instalarlos desde requirement.txt:

pip install -r requirement.txt

REFERENCIA: instalador pip


6

En la versión 7.1.2, pip descarga la rueda de un paquete (si está disponible) con lo siguiente:

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

Lo siguiente descarga una distribución fuente:

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

Estos también descargan las dependencias, si pip las conoce (por ejemplo, si las pip show packageenumera).


Actualizar

Como señaló Anton Khodak , pip downloadse prefiere el comando desde la versión 8. En los ejemplos anteriores, esto significa que /path/to/downloaded/filedebe darse con una opción -d, por lo que se reemplaza installpor downloadfunciona.


Tengo que desarrollar en Windows e implementar en RH7 sin conexión a Internet. Entonces descargo los paquetes fuente con --no-binary: all:. Sin embargo, esto falla al recolectar django-pyodbc-azure == 2.0.4.1 ya que este paquete no tiene fuente. ¿Hay alguna forma de descargar la fuente o, si no existe, de descargar el weehl?
cwhisperer

6

Úselo pip download <package1 package2 package n>para descargar todos los paquetes, incluidas las dependencias

Úselo pip install --no-index --find-links . <package1 package2 package n>para instalar todos los paquetes, incluidas las dependencias. Obtiene todos los archivos de CWD. No descargará nada


2

pip wheel es otra opción que debes considerar:

pip wheel mypackage -w .\outputdir

Descargará paquetes y sus dependencias a un directorio (directorio de trabajo actual por defecto), pero realiza el paso adicional de convertir cualquier paquete fuente a ruedas.

Admite convenientemente archivos de requisitos:

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

Agregue el --no-depsargumento si solo desea los paquetes solicitados específicamente:

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

0

Preferiría (RHEL) - pip download package==version --no-deps --no-binary=:all:


-1

instalar paquetes de Python sin conexión

Para usuarios de Windows :

A descargar en un archivo, abra su cmd y siga esto:

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

pip download <*package name*>

el paquete y las dependencias se descargarán en el directorio de trabajo actual.

Para instalar desde el directorio de trabajo actual:

configure su carpeta donde descargó como el cwd y luego siga estos:

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

esto buscará dependencias en esa ubicación.


si no especifica la plataforma, descargará los archivos para el sistema operativo actual. Por lo tanto, esto no funcionará si instala los archivos descargados en otro sistema operativo
Prometheus
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.