¿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.

Juan C
fuente

Respuestas:

78

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

 pip download <package-name>
Anton Khodak
fuente
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 .

Mark Gemmill
fuente
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

curva segura
fuente
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.

jasaarim
fuente
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

Siva Kranthi Kumar
fuente
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
jpmc26
fuente
0

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

Santosh K
fuente
-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.

Joseph Puthumana
fuente
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