<p>pip sale con éxito a pesar de la restricción incompatible</p>

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

Medio ambiente

  • versión pip: 19.2.3
  • Versión de Python: 3.7.4
  • SO: macOS 18.7.0

Esto también se reprodujo usando docker run python:3 .

Descripción

pip instala un paquete con dependencias rotas, si un archivo de restricciones especifica una versión incompatible. Se muestra un mensaje de error, pero el código de salida es 0 .

Por ejemplo, environs 5.2.1 requiere marshmallow>=2.7.0 , pero pip lo instala con marshmallow 2.6.0 si este último se especifica en un archivo de restricciones.

Comportamiento esperado

pip no debería instalar el paquete y salir con error.

Cómo reproducir

  1. Cree restricciones.txt con marshmallow==2.6.0
  2. Cree requirements.txt con environs==5.2.1
  3. Ejecutar pip install -r requirements.txt -c constraints.txt

Producción

$ docker run --rm -ti python:3 sh
# python -V
Python 3.7.4
# pip -V
pip 19.2.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
# uname -a
Linux 4d4f16cc965f 4.9.184-linuxkit #1 SMP Tue Jul 2 22:58:16 UTC 2019 x86_64 GNU/Linux
# echo marshmallow==2.6.0 > constraints.txt
# echo environs==5.2.1 > requirements.txt
# pip install -r requirements.txt -c constraints.txt
Collecting environs==5.2.1 (from -r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/5f/c9/6b576b8b374dfe78d9435988e6a53497822f31b9da5bdd446343ad1a4d1b/environs-5.2.1-py2.py3-none-any.whl
Collecting marshmallow==2.6.0 (from -c constraints.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/33/44/c3bdd4222909b6452ebe5c028ea5dbe7e9409307b3b933026218c677fcf1/marshmallow-2.6.0-py2.py3-none-any.whl (44kB)
     |████████████████████████████████| 51kB 729kB/s
Collecting python-dotenv (from environs==5.2.1->-r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/57/c8/5b14d5cffe7bb06bedf9d66c4562bf90330d3d35e7f0266928c370d9dd6d/python_dotenv-0.10.3-py2.py3-none-any.whl
ERROR: environs 5.2.1 has requirement marshmallow>=2.7.0, but you'll have marshmallow 2.6.0 which is incompatible.
Installing collected packages: marshmallow, python-dotenv, environs
Successfully installed environs-5.2.1 marshmallow-2.6.0 python-dotenv-0.10.3
# echo $?
0
duplicate auto-locked awaiting response support

Todos 3 comentarios

Esto es esencialmente lo mismo que # 988 (ver también: # 5137).

Pip determina los requisitos a partir de la primera vez que los encuentra (aunque eso está sujeto a cambios sin previo aviso). Cuando se analizan el archivo de requisitos y el archivo de restricciones, terminamos con environs==5.2.1 como requisito y marshmallow==2.6.0 como restricción. Cuando se está procesando environs , marshmallow se nota como una dependencia y la entrada existente ( marshmallow==2.6.0 ) se marca como un requisito, y la versión existente es la que se usa para la instalación . Creo que usar el valor proporcionado por el usuario (incluso si solo es una restricción) es probablemente el comportamiento más correcto que podemos tener aquí.

El error que se rastrea es el mismo que se rastrearía para un pip install environs==5.2.1 marshmallow==2.6.0 simple o invocaciones separadas como pip install environs==5.2.1 && pip install marshmallow==2.6.0 .

Esto se agregó en el n. ° 5000. La razón por la que el código de salida no es 1 es la compatibilidad con versiones anteriores.

Si desea saber programáticamente que esto está sucediendo, debe ejecutar pip check .

Este problema se ha cerrado automáticamente porque no ha habido respuesta a nuestra solicitud de más información del autor original. Con solo la información que se encuentra actualmente en el problema, no tenemos suficiente información para tomar medidas. Comuníquese con nosotros si tiene o encuentre las respuestas que necesitamos para que podamos investigar más.

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