How to Elegantly Compare Python Version Strings
When working with Python packages, it is often necessary to compare version numbers. However, comparing string versions can lead to incorrect results, as the string order may not correspond to the actual version ordering.
To address this issue, Python provides the packaging.version.Version class, which supports the PEP 440 style of version string ordering. This method allows for the accurate comparison of version strings, taking into account special characters and pre-release identifiers.
Using Version is straightforward:
from packaging.version import Version version1 = Version("2.3.1") version2 = Version("10.1.2") print(version1Unlike the native string comparison, Version correctly recognizes that "2.3.1" is less than "10.1.2".
Another option, though deprecated, is distutils.version. While it is undocumented and conforms to the outdated PEP 386, it may still be encountered:
from distutils.version import LooseVersion version1 = LooseVersion("2.3.1") version2 = LooseVersion("10.1.2") print(version1However, distutils.version has limitations and doesn't handle PEP 440 versions correctly.
In summary, for comparing Python version strings accurately and in a Pythonic way, use packaging.version.Version.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3