430 Stimmen

Wie kann ich Versionsnummern in Python vergleichen?

Ich gehe durch ein Verzeichnis, das Eier enthält, um diese Eier zu den sys.path . Wenn es zwei Versionen desselben .egg im Verzeichnis gibt, möchte ich nur die neueste hinzufügen.

Ich habe einen regulären Ausdruck r"^(?P<eggName>\w+)-(?P<eggVersion>[\d\.]+)-.+\.egg$ um den Namen und die Version aus dem Dateinamen zu extrahieren. Das Problem besteht darin, die Versionsnummer zu vergleichen, die eine Zeichenkette ist wie 2.3.1 .

Da ich Zeichenketten vergleiche, wird 2 über 10 sortiert, aber das ist für Versionen nicht korrekt.

>>> "2.3.1" > "10.1.1"
True

Ich könnte einige Splitting, Parsing, Casting zu int, etc. tun, und ich würde schließlich eine Problemlösung zu bekommen. Aber das ist Python, nicht Java . Gibt es eine elegante Möglichkeit, Versionszeichenfolgen zu vergleichen?

-1voto

Dan M Punkte 1117

Einfache Einzeiler:

import sys
if (sys.version_info.major, sys.version_info.minor) >= (3, 9):
    ...
else:
    ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X