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 😍)
Vielen Dank für Details und einfache Wiedergabe! Sehr geschätzt!
Dies ist im Grunde # 988. Als kurze Zusammenfassung:
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.
pip check
als Teil Ihres CI, um sicherzustellen, dass pip nichts Dummes getan hat.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.