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 😍)
¡Gracias por los detalles y fácil reproducción! ¡Muy apreciado!
Este es básicamente el # 988. Como resumen rápido:
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.
pip check
como parte de su CI, para asegurarse de que pip no haya hecho algo estúpido.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.