Sin pasar por la instalación, quiero ver rápidamente todos los paquetes que pip install
se instalarían.¿Hay alguna manera de enumerar dependencias/requisitos de pip?
Respuesta
Lo más cerca que se puede obtener con pip directamente es el uso de la --no-install
argumento:
pip install --no-install <package>
Por ejemplo, esta es la salida al instalar el apio:
Downloading/unpacking celery
Downloading celery-2.5.5.tar.gz (945Kb): 945Kb downloaded
Running setup.py egg_info for package celery
no previously-included directories found matching 'tests/*.pyc'
no previously-included directories found matching 'docs/*.pyc'
no previously-included directories found matching 'contrib/*.pyc'
no previously-included directories found matching 'celery/*.pyc'
no previously-included directories found matching 'examples/*.pyc'
no previously-included directories found matching 'bin/*.pyc'
no previously-included directories found matching 'docs/.build'
no previously-included directories found matching 'docs/graffles'
no previously-included directories found matching '.tox/*'
Downloading/unpacking anyjson>=0.3.1 (from celery)
Downloading anyjson-0.3.3.tar.gz
Running setup.py egg_info for package anyjson
Downloading/unpacking kombu>=2.1.8,<2.2.0 (from celery)
Downloading kombu-2.1.8.tar.gz (273Kb): 273Kb downloaded
Running setup.py egg_info for package kombu
Downloading/unpacking python-dateutil>=1.5,<2.0 (from celery)
Downloading python-dateutil-1.5.tar.gz (233Kb): 233Kb downloaded
Running setup.py egg_info for package python-dateutil
Downloading/unpacking amqplib>=1.0 (from kombu>=2.1.8,<2.2.0->celery)
Downloading amqplib-1.0.2.tgz (58Kb): 58Kb downloaded
Running setup.py egg_info for package amqplib
Successfully downloaded celery anyjson kombu python-dateutil amqplib
Es cierto que esto no dejar un poco navega en forma de archivos temporales, pero logra el objetivo. Si está haciendo esto con virtualenv (que debería ser), la limpieza es tan fácil como eliminar el directorio <virtualenv root>/build
.
La razón de esto es que los metadatos no existen fuera de setup.py, a diferencia de decir con 'rpm' o' dpkg' donde se genera un índice de metadatos en la parte superior y se consulta que 'pip' y' pypi' no trabaja de esa manera. Entonces, debemos pasar cada requisito. –
Gracias @paul, tu comentario completa la respuesta – lastoneisbearfood
Probé 'pip --no-install apio' pero recibí el error' no existe esa opción: --no-install' (pip 1.2.1) –
Si y solo si se instala el paquete, puede usar pip show <package>
. Busque el Requires:
archivado al final de la salida. Claramente, esto rompe su requerimiento pero puede ser útil de todos modos.
Por ejemplo:
$ pip --version
pip 7.1.0 [...]
$ pip show pytest
---
Metadata-Version: 2.0
Name: pytest
Version: 2.7.2
Summary: pytest: simple powerful testing with Python
Home-page: http://pytest.org
Author: Holger Krekel, Benjamin Peterson, Ronny Pfannschmidt, Floris Bruynooghe and others
Author-email: holger at merlinux.eu
License: MIT license
Location: /home/usr/.tox/develop/lib/python2.7/site-packages
Requires: py
El comando pip install <package> --download <path>
se debe utilizar, como se menciona en los comentarios de acuerdo @radtek, ya que a partir de 7.0.0 (21/05/2015), --no-install es removed desde pip
. Esto descargará las dependencias necesarias en <path>
.
Ridículamente, ** '--download' también ha quedado obsoleto. ** El comando canónico _now_ parece ser 'pip download
La respuesta aceptada ya no es relevante para las versiones más actuales de pip y no da una respuesta inmediata sin leer detenidamente varios comentarios, así que estoy proporcionando una respuesta actualizada.
Esto se probó con las versiones de pip 8.1.2 y 9.0.1.
para obtener la salida sin estorbar su directorio actual en Linux utilizar
pip download [package] -d /tmp --no-binary :all:
-d
dice pip el directorio que descarga debe poner los archivos en.
mejor, sólo tiene que utilizar este script con el argumento de ser el nombre del paquete para obtener sólo las dependencias como salida:
#!/bin/sh
PACKAGE=$1
pip download $PACKAGE -d /tmp --no-binary :all: \
| grep Collecting \
| cut -d' ' -f2 \
| grep -v $PACKAGE
también disponible here.
** Esto es increíble y debería ser la respuesta aceptada. ** Francamente, la interfaz 'pip' predeterminada es horrible y continúa deteriorándose con cada confirmación que pasa. La capacidad de enumerar dependencias de paquetes _sin_ descargar paquete cruft debe ser la funcionalidad principal. Como no es así, el guión de shell de Bourne concluyente es la mejor opción. ' shakes_head>' –
Otra opción es utilizar un script de ayuda similar a this one que utiliza la API para analizar pip.req.parse_requirements
requirements.txt
archivos y un reemplazo distutils.core.setup
para analizar setup.py
archivos.
EN CASO de que ya tenga instalados los paquetes, este script puede obtener todas las dependencias de un archivo de requisitos ejecutando el comando pip show
mencionado por @Sardathrion.
import commands
fil = open("requirements.txt")
for package_line in fil.readlines():
if "==" in package_line:
package = package_line.split("==")[0]
elif "[" in package_line:
package = package_line.split("[")[0]
else:
package = package_line
output = commands.getoutput('pip show %s' % package)
try:
required = output.split("\n")[-1].split(":")[1]
except Exception as e:
required = ""
print "error {} in package {}".format(e, package)
if len(required) > 1:
print package, "-- ****%s***" % required
- 1. ¿Hay alguna manera de enumerar dependencias de tareas en Gradle?
- 2. ¿Hay alguna manera de enumerar todas las asociaciones belongs_to?
- 3. ¿Hay alguna forma de desinstalar varios paquetes con pip?
- 4. ¿Hay alguna manera de enumerar las sugerencias de editor de NetBeans?
- 5. ¿Hay alguna manera de desactivar una etiqueta?
- 6. ¿Hay alguna forma de enumerar las señales de Django?
- 7. ¿Hay alguna manera de cancelar StorageFile.CopyAsync()?
- 8. ¿Hay alguna manera de pausar una CABasicAnimation?
- 9. ¿Hay alguna manera de reenviar declarar covarianza?
- 10. ¿Hay alguna manera de negar un predicado?
- 11. ¿Hay alguna manera de evitar recursiones innecesarias?
- 12. ¿Hay alguna manera de "reiniciar" la JVM?
- 13. ¿Hay alguna manera de desarrollar SmartArt personalizado?
- 14. ¿Hay alguna manera de anular ConfigurationManager.AppSettings?
- 15. ¿Hay alguna manera funcional de hacerlo?
- 16. ¿Hay alguna manera de descompilar Linux .so?
- 17. ¿Hay alguna manera de acelerar Jsoup.parse()?
- 18. ¿Hay alguna manera de omitir el parámetro?
- 19. ¿Hay alguna manera de animar diseños? [Android]?
- 20. ¿Hay alguna manera de "limpiar" una superficie?
- 21. e.preventDefault - ¿hay alguna manera de hacerlo?
- 22. ¿Hay alguna manera de memorizar o materializar un IEnumerable?
- 23. ¿Hay alguna manera de enumerar las transacciones abiertas en la base de datos de SQL Server 2000?
- 24. ¿Hay alguna forma de enumerar todas las llamadas de iguales() de una determinada clase con Eclipse?
- 25. ¿Hay alguna manera de enumerar todas las asociaciones predeterminadas de modo normal, visual e insertar en vim?
- 26. ¿Hay alguna manera de obtener el objeto predeterminado de $ .ajax?
- 27. ¿Hay alguna manera de captar el estado real de System.Random?
- 28. ¿Hay alguna manera de conocer el método de invocación?
- 29. ¿Hay alguna manera de crear complementos de Eclipse con Python?
- 30. ¿Hay alguna manera de cambiar el modo predeterminado de vim?
relacionadas: http://stackoverflow.com/q/9232568/183791 – dusan
Tal vez (https://github.com/cakebread/yolk) puede ayudar [yema]? – jadkik94
yema parece una herramienta genial. Gracias por hacérmelo saber. – lastoneisbearfood