Error de omisión al instalar paquetes usando PIP

corro pip

pip install -r /requirements.txt

Si uno de mis paquetes falla, todo se cancela y no se instalarán otros paquetes.

¿Hay algún comando que en caso de error continúe instalando el siguiente paquete?

Entonces, para mi caso de uso: esto es lo que hago usando un archivo fabuloso:

def _install_requirements():
    """
    Installs the required packages from the requirements.txt file using pip.
    """

    if not exists(config.SERVER_PROJECT_PATH + '/requirements.txt', use_sudo=True):
        print('Could not find requirements')
        return
    sudo('pip install -r %s/requirements.txt' % SERVER_PROJECT_PATH)

preguntado el 19 de mayo de 14 a las 15:05

No creo que esto sea posible con pip. No tendría demasiado sentido, ¿verdad? Quiero decir, ¿de qué sirve instalar algo si depende de otro paquete que no se instaló correctamente? Ambos no funcionarían de todos modos -

Para mi caso de uso, instalo mis requisitos a través de un archivo fabuloso en el servidor y un error impide que todo continúe. -

¿Has probado un for bucle con un bloque try/except? -

1 Respuestas

Hay un script de Python útil para actualizar todas las bibliotecas con pip (fuente):

import pip
from subprocess import call

for dist in pip.get_installed_distributions():
    call("pip install --upgrade " + dist.project_name, shell=True)

En el bucle 'for' puede recorrer los requisitos.

# read requirements.txt file, create list of package names
for package in requirements:
    call("pip install " + package, shell=True)

Esto no fallará si no puede instalar un paquete.

contestado el 23 de mayo de 17 a las 13:05

Buena solución, ¿la función de 'llamada' es parte de Fab? - Prometeo

también, ¿qué hace 'shell = True'? - Prometeo

shell=True lo hace dependiente de la plataforma. En mi caso, es obligatorio. stackoverflow.com/a/3172488/2327328 - philshem

'call' es del subproceso e independiente de fabric.api. Probablemente podrías hacer lo mismo con fab. - philshem

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.