Pip: Pip ne met pas à jour les dépendances trop anciennes lors de l'installation de plusieurs packages

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

La description
Je vais discuter de paquets spécifiques, car cela a été observé dans la nature (HypothesisWorks / hypothesis # 2113): nous avons récemment mis à jour notre dépendance install_requires sur attrs>=16.0 à attrs>=19.2 , sur la base selon laquelle l'installation de la dernière version d'Hypothesis mettrait également à jour les attrs des utilisateurs.

  • pip install hypothesis fonctionne effectivement.
  • pip install pytest hypothesis fonctionne si une ancienne version d'attrs n'est pas déjà installée.

Il semble que lorsque plusieurs packages sont répertoriés dans une commande d'installation, la compatibilité des dépendances déjà installées n'est évaluée que pour le premier package répertorié et pour les packages ultérieurs, la présence mais pas la version des dépendances est vérifiée. Cela affecte également l'utilisation des fichiers d'exigences.

Comportement prévisible

Indépendamment des autres packages listés à installer ou déjà présents, pip install hypothesis devrait résulter en un ensemble compatible de packages installés ou en un message d'erreur - pas un environnement cassé.

Comment reproduire

[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"

Ensuite, exécutez tox --recreate pour recréer l'environnement virtuel et exécutez les commandes.

(Et merci à tous ceux qui travaillent sur pip , c'est très précieux et très apprécié 😍)

dependency resolution auto-locked bug

Tous les 3 commentaires

Merci pour les détails et la reproduction facile! Très appréciée!

Ceci est essentiellement # 988. En résumé rapide:

  • pip imprime un message en rouge, avec ERROR en majuscules.
    ERROR: hypothesis 4.38.2 has requirement attrs>=19.2.0, but you'll have attrs 19.1.0 which is incompatible.
  • Utilisez pip check dans votre CI, pour vous assurer que pip n'a pas fait quelque chose de stupide.
  • Utilisez pip-tools (encapsule pip avec un meilleur résolveur) ou pipenv (qui utilise pip-tools ) ou poetry (qui a son propre résolveur), pour éviter cela bizarrerie du résolveur de pip.

Ah, je vois! J'ai vérifié les dernières pages de problèmes, mais rien d'aussi loin ... heureux de fermer ce problème en double, car je ne pense pas qu'il contient des informations supplémentaires?

Clôture en double du n ° 988.

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