Gegeben zwei Versionsnummern und einem Vergleich Spezifizierer:Python vergleicht Versionsnummern mit dynamischem Vergleich Spezifizierer
def check_versions(ver1, specifier, ver2):
# TODO
check_versions("1.2.3", ">=", "2.0.0") # Should return True
check_versions("1.2.3", "==", "2.0.0") # Should return False
Ich mag den Vergleich zu den beiden Versionen anzuwenden, so dass ich die erwarteten Ausgabe von oben erhalten.
Ich habe festgestellt, dass ich Versionen LooseVersion
von distutils.version
wie so verwenden vergleichen:
LooseVersion("1.2.3") >= LooseVersion("2.0.0")
Aber wie kann ich den Vergleich selbst mache in specifier
auf dem bestandenen ab?
konnte ich die Lösung von here verwenden:
def check_versions(ver1, specifier, ver2):
return {
'==': LooseVersion(ver1) == LooseVersion(ver2),
'>=': LooseVersion(ver1) >= LooseVersion(ver2),
'<=': LooseVersion(ver1) <= LooseVersion(ver2),
'>': LooseVersion(ver1) > LooseVersion(ver2),
'<': LooseVersion(ver1) < LooseVersion(ver2),
}.get(x, False)
Aber das fühlt sich einfach wirklich klobig zu mir. Gibt es keine elegantere Lösung?
Warum verwenden Sie nicht smerver: https://github.com/k-bx/python-semver –
@Apero Wenn der Vergleichsoperator dynamisch ist, bedeutet das, ich weiß nicht, ob der Scheck '
oh ich verpasste diesen wichtigen Punkt, in der Tat –