Versionsnummern in Python vergleichen
In Python ist es oft notwendig, Versionen zu vergleichen, insbesondere wenn man mit der Paketverwaltung arbeitet oder Softwareabhängigkeiten verfolgt. Der direkte Vergleich von Zeichenfolgenversionen kann jedoch aufgrund der lexikografischen Reihenfolge zu falschen Ergebnissen führen.
Verwendung von „packaging.version.Version“
Die empfohlene Lösung ist die Verwendung von „packaging.version“. .Version-Klasse aus der Verpackungsbibliothek. Diese Klasse bietet Unterstützung für die Reihenfolge im PEP 440-Stil und stellt sicher, dass Versionen ordnungsgemäß gemäß den von der Python Packaging Authority definierten Regeln verglichen werden.
import packaging.version as version version("2.3.1") < version("10.1.2") # True version("1.3.a4") < version("10.1.2") # True
Alternativen
Prior Aufgrund der Verfügbarkeit von Paketen wurde das Modul distutils.version zum Versionsvergleich verwendet. Es ist jedoch veraltet und entspricht dem inzwischen abgelösten PEP 386. Es wird empfohlen, die Verwendung dieses Moduls zu vermeiden und sich stattdessen auf package.version.Version zu verlassen.
Veraltetes DISTutils.version-Modul
from distutils.version import LooseVersion, StrictVersion LooseVersion("2.3.1") < LooseVersion("10.1.2") # True StrictVersion("2.3.1") < StrictVersion("10.1.2") # True StrictVersion("1.3.a4") # ValueError: invalid version number '1.3.a4'
Beachten Sie, dass StrictVersion keine PEP 440-Versionen unterstützt und diese als „nicht“ betrachtet streng.“
Fazit
Bevorzugen Sie beim Vergleichen von Versionsnummern in Python die Klasse package.version.Version für genaue und zuverlässige Ergebnisse. Es folgt den neuesten PEP 440-Spezifikationen und gewährleistet eine konsistente Versionsreihenfolge. Vermeiden Sie die Verwendung des veralteten Moduls distutils.version, da dies zu falschen Vergleichen führen kann.
Das obige ist der detaillierte Inhalt vonWie vergleiche ich Versionsnummern in Python genau?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!