跳到内容
🛠️ToolsShed

语义版本计算器

比较语义版本并检查版本是否满足范围(^、~、>=等)。

比较两个版本

范围示例

^1.2.3>= 1.2.3 < 2.0.0
~1.2.3>= 1.2.3 < 1.3.0
>=1.0.0 <2.0.0>= 1.0.0 AND < 2.0.0
1.0.0 - 2.0.0>= 1.0.0 <= 2.0.0
1.x.x || 2.x.x1.x OR 2.x

关于此工具

语义版本控制(SemVer)通过形如MAJOR.MINOR.PATCH的版本号标准化传递软件变更信息。该工具可帮助你快速比较版本并检查特定版本是否满足范围约束——这在跨项目、库和框架管理依赖时至关重要。

使用时,在第一部分输入版本号(如1.5.0)和范围表达式(如^1.0.0或>=1.0.0 <2.0.0),查看该版本是否与范围匹配。第二部分允许你直接比较两个版本以确定其顺序关系。内置示例展示了常见的范围操作符:插入符(^)允许MINOR和PATCH更新,波浪号(~)仅限PATCH更新,连字符范围(1.0.0 - 2.0.0)涵盖两个版本间的所有版本。

开发者和包管理器每天都依赖这些版本检查来确保兼容性并防止破坏性变更。在代码审查、依赖升级和需要验证版本约束的CI/CD管道中,该计算器可节省大量时间。

常见问题

代码实现

# pip install packaging
from packaging.version import Version
from packaging.specifiers import SpecifierSet

v1 = Version("1.2.3")
v2 = Version("2.0.0")
v3 = Version("1.2.3-alpha.1")  # Note: packaging uses PEP 440 syntax

# Comparison
print(v1 < v2)    # True
print(v1 == Version("1.2.3"))  # True

# Check if a version satisfies a specifier
spec = SpecifierSet(">=1.0.0,<2.0.0")
print(Version("1.5.0") in spec)   # True
print(Version("2.0.0") in spec)   # False
print(Version("0.9.0") in spec)   # False

# PEP 440 pre-release (different from semver!)
v_pre = Version("1.0.0a1")    # alpha 1
v_rc  = Version("1.0.0rc2")   # release candidate 2
print(v_pre < v_rc < Version("1.0.0"))  # True

# Sorting versions
versions = [Version(v) for v in ["2.0.0", "1.0.0", "1.5.0", "1.5.1"]]
print(sorted(versions))
# [<Version('1.0.0')>, <Version('1.5.0')>, <Version('1.5.1')>, <Version('2.0.0')>]

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.