I am walking a directory that contains eggs to add those eggs to the sys.path. If there are two versions of the same .egg in the directory, I want to add only the latest one.
I have a regular expression r"^(?P\w+)-(?P[\d\.]+)-.+\.egg$ to extract the name and version from the filename. The problem is comparing the version number, which is a string like 2.3.1.
Since I'm comparing strings, 2 sorts above 10, but that's not correct for versions.
>>> "2.3.1" > "10.1.1"
True
I could do some splitting, parsing, casting to int, etc., and I would eventually get a workaround. But this is Python, not Java. Is there an elegant way to compare version strings?
解决方案>>> from packaging import version
>>> version.parse("2.3.1") < version.parse("10.1.2")
True