<p>le pip se termine avec succès malgré une contrainte incompatible</p>

Créé le 3 sept. 2019  ·  3Commentaires  ·  Source: pypa/pip

Environnement

  • version pépin : 19.2.3
  • Version Python : 3.7.4
  • Système d'exploitation : macOS 18.7.0

Cela a également été reproduit en utilisant docker run python:3 .

La description

pip installe un package avec des dépendances rompues, si un fichier de contraintes spécifie une version incompatible. Un message d'erreur s'affiche, mais le code de sortie est 0 .

Par exemple, environs 5.2.1 requiert marshmallow>=2.7.0 , mais pip l'installe avec marshmallow 2.6.0 si ce dernier est spécifié dans un fichier de contraintes.

Comportement prévisible

pip ne doit pas installer le paquet et se terminer avec un échec.

Comment reproduire

  1. Créer contraintes.txt avec marshmallow==2.6.0
  2. Créez requirements.txt avec environs==5.2.1
  3. Courir pip install -r requirements.txt -c constraints.txt

Sortir

$ 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

Tous les 3 commentaires

C'est essentiellement le même que #988 (voir aussi : #5137).

Pip détermine les exigences sur la base de la première rencontre (bien que cela puisse être modifié sans préavis). Lorsque le fichier d'exigences et le fichier de contraintes sont analysés, nous nous retrouvons avec environs==5.2.1 comme exigence et marshmallow==2.6.0 comme contrainte. Lorsque environs est en cours de traitement, marshmallow est remarqué comme une dépendance et l'entrée existante ( marshmallow==2.6.0 ) est marquée comme une exigence, et la version existante est celle utilisée pour l'installation . Je pense que l'utilisation de la valeur fournie par l'utilisateur (même si ce n'est qu'une contrainte) est probablement le comportement le plus correct que nous puissions avoir ici.

L'erreur qui est tracée est la même qui serait tracée pour un simple pip install environs==5.2.1 marshmallow==2.6.0 ou des invocations séparées comme pip install environs==5.2.1 && pip install marshmallow==2.6.0 .

Cela a été ajouté dans #5000. La raison pour laquelle le code de sortie n'est pas 1, est la rétrocompatibilité.

Si vous voulez savoir par programme que cela se produit, vous voulez exécuter pip check .

Ce problème a été automatiquement fermé car il n'y a pas eu de réponse à notre demande d'informations supplémentaires de la part de l'auteur d'origine. Avec seulement les informations qui sont actuellement dans le problème, nous n'avons pas assez d'informations pour prendre des mesures. Veuillez nous contacter si vous avez ou trouvez les réponses dont nous avons besoin afin que nous puissions approfondir nos recherches.

Cette page vous a été utile?
0 / 5 - 0 notes