Pip: Pip no actualiza dependencias demasiado antiguas al instalar varios paquetes

Creado en 4 oct. 2019  ·  3Comentarios  ·  Fuente: pypa/pip

Descripción
Discutiré paquetes específicos, ya que esto se ha observado en la naturaleza (HypothesisWorks / hypothesis # 2113): recientemente actualizamos nuestra dependencia install_requires de attrs>=16.0 a attrs>=19.2 , en la base de que la instalación de la última versión de Hypothesis también actualizaría los atributos de los usuarios.

  • pip install hypothesis hecho funciona.
  • pip install pytest hypothesis funciona si aún no está instalada una versión anterior de attrs.

Parece que, cuando se enumeran varios paquetes en un comando de instalación, la compatibilidad de las dependencias ya instaladas solo se evalúa para el primer paquete enumerado y para los paquetes posteriores se verifica la presencia pero no la versión de las dependencias. Esto también afecta el uso de archivos de requisitos.

Comportamiento esperado

Independientemente de otros paquetes listados para instalar o ya presentes, pip install hypothesis debería resultar en un conjunto compatible de paquetes instalados o en un mensaje de error, no en un entorno roto.

Cómo reproducir

[tox]
skipsdist=True
[testenv]
deps =
    pip
    attrs==19.1.0
commands =
    ## Execute the problematic install command
    # pip install hypothesis  # works
    # pip install hypothesis pytest  # works
    pip install pytest hypothesis  #  fails, as does `pip install attrs hypothesis` !
    # pip install --upgrade pytest hypothesis  # works

    ## Check that the installed packages are compatible
    python -c "import hypothesis"

Luego ejecute tox --recreate para, bueno, recrear el entorno virtual y ejecutar los comandos.

(Y gracias a todos los que trabajaron en pip , es muy valioso y muy apreciado 😍)

dependency resolution auto-locked bug

Todos 3 comentarios

¡Gracias por los detalles y fácil reproducción! ¡Muy apreciado!

Este es básicamente el # 988. Como resumen rápido:

  • pip imprime un mensaje en rojo, con ERROR en mayúsculas.
    ERROR: hypothesis 4.38.2 has requirement attrs>=19.2.0, but you'll have attrs 19.1.0 which is incompatible.
  • Use pip check como parte de su CI, para asegurarse de que pip no haya hecho algo estúpido.
  • Use pip-tools (envuelve pip con un mejor resolutor) o pipenv (que usa pip-tools ) o poetry (que tiene su propio resolutor), para evitar esto peculiaridad del resolutor de pip.

¡Ah, ya veo! Revisé las últimas páginas de problemas, pero nada tan atrás ... feliz de cerrar este problema como un duplicado, ya que no creo que tenga información adicional.

Cerrando como duplicado de # 988.

¿Fue útil esta página
0 / 5 - 0 calificaciones