Was bedeutet in Anforderungen.txt Tilde gleich (~ =)?


100

In der requirements.txtfür eine Python-Bibliothek, die ich verwende, wird eine der folgenden Anforderungen angegeben:

mock-django~=0.6.10

Was heißt ~=das

Antworten:


119

Dies bedeutet, dass die neueste Version des Pakets ausgewählt wird, die größer oder gleich 0.6.10 ist, aber immer noch in der Version 0.6. * Ist, sodass beispielsweise nicht 0.7.0 heruntergeladen wird. Es stellt sicher, dass Sie Sicherheitskorrekturen erhalten, aber die Abwärtskompatibilität beibehalten, wenn der Paketbetreuer die semantische Versionierung respektiert (die besagt, dass wichtige Änderungen nur in Hauptversionen auftreten sollten).

Oder wie von PEP 440 gesagt:

Für eine gegebene Versionskennung VN entspricht die kompatible Freigabeklausel ungefähr dem Paar von Vergleichsklauseln:

>= V.N, == V.*


3
"CA"? Gibt es Ausnahmen für diese Äquivalenz?
AXO

1
@AXO AFAIK, es gibt Feinheiten mit Versionsübereinstimmung vor / nach der Veröffentlichung. Meistens wirkt sich dies nicht auf die Grundnutzung aus, die ohnehin auf die Übereinstimmung von Haupt- und Nebenversionen beschränkt ist.
Maxime Lorant

12

Dies ist der Versionsspezifizierer für kompatible Versionen .

Es ist äquivalent zu: mock-django >= 0.6.10, == 0.6.* und ist eine ordentliche Methode, um eine Version abzugleichen, von der erwartet wird, dass sie kompatibel ist. Im Klartext ist es ein bisschen so, als würde man sagen: "Ich brauche eine Version von Mock-Django, die mindestens so neu wie 0.6.10 ist, aber nicht so neu, dass sie nicht damit kompatibel ist."

Wenn Sie sich bei all diesen Versionsnummern nicht sicher sind , sollten Sie einen kurzen Blick auf das PEP440- Versionsschema werfen !


7

~ = bedeutet eine kompatible Version. Nicht weniger als 0,6,10 und höher (0,6. *).


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.