Pip: Pip aktualisiert keine zu alten Abhängigkeiten, wenn mehrere Pakete installiert werden

Erstellt am 4. Okt. 2019  ·  3Kommentare  ·  Quelle: pypa/pip

Beschreibung
Ich werde bestimmte Pakete diskutieren, da dies in freier Wildbahn beobachtet wurde (HypothesisWorks / Hypothese # 2113): Wir haben kürzlich unsere Abhängigkeit von attrs>=16.0 install_requires von attrs>=16.0 auf attrs>=19.2 aktualisiert Die Grundlage dafür, dass durch die Installation der neuesten Version von Hypothesis auch die Attribute der Benutzer aktualisiert werden.

  • pip install hypothesis funktioniert tatsächlich.
  • pip install pytest hypothesis funktioniert, wenn eine ältere Version von attrs noch nicht installiert ist.

Wenn in einem Installationsbefehl mehrere Pakete aufgelistet sind, wird die Kompatibilität bereits installierter Abhängigkeiten anscheinend nur für das erste aufgelistete Paket bewertet, und für spätere Pakete wird das Vorhandensein, jedoch nicht die Version von Abhängigkeiten überprüft. Dies wirkt sich auch auf die Verwendung von Anforderungsdateien aus.

Erwartetes Verhalten

Unabhängig von anderen Paketen, die zur Installation aufgelistet sind oder bereits vorhanden sind, sollte pip install hypothesis entweder zu einem kompatiblen Satz installierter Pakete oder zu einer Fehlermeldung führen - nicht zu einer fehlerhaften Umgebung.

Wie zu reproduzieren

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

Führen Sie dann tox --recreate , um die virtuelle Umgebung neu zu erstellen und die Befehle auszuführen.

(Und danke an alle, die an pip , es ist sehr wertvoll und wird sehr geschätzt 😍)

dependency resolution auto-locked bug

Alle 3 Kommentare

Vielen Dank für Details und einfache Wiedergabe! Sehr geschätzt!

Dies ist im Grunde # 988. Als kurze Zusammenfassung:

  • pip druckt eine Nachricht in Rot mit ERROR in Großbuchstaben.
    ERROR: hypothesis 4.38.2 has requirement attrs>=19.2.0, but you'll have attrs 19.1.0 which is incompatible.
  • Verwenden Sie pip check als Teil Ihres CI, um sicherzustellen, dass pip nichts Dummes getan hat.
  • Verwenden Sie pip-tools (umschließt Pip mit einem besseren Resolver) oder pipenv (verwendet pip-tools ) oder poetry (das einen eigenen Resolver hat), um dies zu vermeiden Eigenart von Pips Resolver.

Ah ich sehe! Ich habe die letzten Seiten der Ausgaben durchgesehen, aber nichts so weit zurück ... Ich bin froh, diese Ausgabe als Duplikat zu schließen, da ich glaube, dass sie keine zusätzlichen Informationen enthält.

Schließen als Duplikat von # 988.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen