Maison  >  Article  >  développement back-end  >  Comment comparer de manière fiable les numéros de version en Python ?

Comment comparer de manière fiable les numéros de version en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-22 06:44:12231parcourir

How to Reliably Compare Version Numbers in Python?

Comparaison des numéros de version en Python

Lorsque vous parcourez un répertoire contenant plusieurs versions du même œuf, assurez-vous que seule la dernière version est ajoutée au sys.path peut poser un défi en raison de l'ordre non intuitif des chaînes de version lorsque l'on les compare comme strings.

Utilisation de packaging.version

Python fournit une solution élégante via le module packaging.version, qui prend en charge l'ordre des chaînes de version de style PEP 440. Ce module propose la classe Version, qui peut être utilisée pour comparer les versions avec précision.

from packaging.version import Version

# Example:
version1 = Version("2.3.1")
version2 = Version("10.1.2")
print(version1 < version2)  # True

Méthodes héritées

Une ancienne méthode pour comparer les chaînes de version est distutils.version . Cependant, il est obsolète et adhère au PEP 386 remplacé. Il fournit deux classes, LooseVersion et StrictVersion.

from distutils.version import LooseVersion, StrictVersion

# LooseVersion compares versions loosely:
version1 = LooseVersion("2.3.1")
version2 = LooseVersion("10.1.2")
print(version1 < version2)  # True

# StrictVersion is stricter in its comparison:
version1 = StrictVersion("2.3.1")
version2 = StrictVersion("10.1.2")
print(version1 < version2)  # True

# However, it doesn't recognize valid PEP 440 versions as strict:
version1 = StrictVersion("1.3.a4")
print(version1)  # ValueError: invalid version number '1.3.a4'

Conclusion

Lors de la comparaison des numéros de version en Python, packaging.version offre une solution fiable et élégante. Il adhère à la spécification PEP 440 actuelle et fournit une API claire et concise pour la comparaison des versions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn