如果持有版本号的字符串高于在Python 3中持有版本号的另一个字符串,则进行锻炼。
这就是我的尝试:
request_version = "1.10.1"
current_version = "1.11"
if Decimal(request_version) > Decimal(current_version):
pass
但是,我收到此错误,为什么?
InvalidOperation at /api/version/
[<class 'decimal.ConversionSyntax'>]
答案 0 :(得分:4)
您正在尝试将版本字符串转换为浮点数,因为1.2.3
不是有效的浮点数而失败。
你可能想要的这类东西是packaging包,它实现了PEP 440版本的语义(以及其他细节):
>>> from packaging.version import parse
>>> request_version = parse("1.10.1")
>>> current_version = parse("1.11")
>>> request_version > current_version
False
>>> request_version < current_version
True
这个parse
将创建一个Version
对象,允许比较版本
答案 1 :(得分:1)
您可能希望使用LooseVersion
中的distutils.version
:
from distutils.version import LooseVersion as V
current = V('1.10.1')
request_version = V('1.11')
if current < request_version:
print("Yay.")