Как сравнить номера версий в Python?

Я иду по каталогу, содержащему яйца, чтобы добавить эти яйца в sys.path. Если в каталоге есть две версии одного и того же.egg, я хочу добавить только самую последнюю.

У меня есть регулярное выражение r"^(?P\w+)-(?P[\d\.]+)-.+\.egg$для извлечения имени и версии из имени файла. Проблема заключается в сравнении номера версии, который представляет собой строку типа 2.3.1.

Поскольку я сравниваю строки, 2 сорта выше 10, но это неверно для версий.

>>> "2.3.1" > "10.1.1"
True

Я мог бы выполнить разбиение, синтаксический анализ, приведение к типу int и т. д., и в конечном итоге я бы нашел обходной путь. Но это Python, , а не Java . Есть ли элегантный способ сравнить строки версий?

204
задан Stevoisiak supports Monica 28 February 2018 в 07:02
поделиться