- 简介
- 安装
- 初试
- 解析字符串
- Version 对象
- 参考文献
Python比较版本号,遵循 PyPA规范
PEP 440 定义的公共版本标识符如下:
[N!]N(.N)*[{a|b|rc}N][.postN][.devN]
最多分为五个部分:
- Epoch:N!
- Release:N(.N)*
- Pre-release:{a|b|rc}N
- Post-release:postN
- Development release:devN
| 类型 | 例子 |
|---|---|
| 最终发布版本Final releases | 0.9.1 1.0 2012.10 |
| 预发布版本Pre-releases | X.YaN # Alpha release X.YbN # Beta release X.YrcN # Release Candidate X.Y # Final release |
| 发布版本Post-releases | X.Y.postN |
| 开发版本Developmental releases | X.Y.devN |
pip install packaging
from packaging.version import Version, parse
v1 = parse('1.0a5')
v2 = Version('1.0')
print(v1) # 1.0a5
print(v2) # 1.0
print(v1 < v2) # True
print(v1.epoch) # 0
print(v1.release) # (1, 0)
print(v1.pre) # ('a', 5)
print(v1.is_prerelease) # True
print(v2.is_prerelease) # False
print(Version('1.0').post) # None
print(Version('1.0').is_postrelease) # False
print(Version('1.0.post0').post) # 0
print(Version('1.0.post0').is_postrelease) # True
parse() 返回 Version 对象
支持比较和排序,实现 PEP 440 定义的版本方案
| 参数 | 含义 |
|---|---|
| public | 公共版本号 |
| base_version | 基本版本号,没有任何发布前或发布后标记 |
| epoch | 版本周期整数 |
| release | 基本版本号的整数元组 |
| major | release的第一项 |
| minor | release的第二项 |
| micro | release的第三项 |
| pre | 预发布版本号的元组,第一项为a或b或rc,第二项为版本整数 |
| is_prerelease | 是否为预发布版本 |
| post | 发布版本 |
| is_postrelease | 是否发布版本 |
| dev | 开发版本 |
| is_devrelease | 是否开发版本 |
from packaging.version import Version
version = Version('1!2.5.5.a1')
print(version.public) # 1!2.5.5a1
print(version.base_version) # 1!2.5.5
print(version.epoch) # 1
print(version.release) # (2, 5, 5)
print(version.major) # 2
print(version.minor) # 5
print(version.micro) # 5
print(version.pre) # ('a', 1)
print(version.is_prerelease) # True
print()
version = Version('2.5.5.post2')
print(version.post) # 2
print(version.is_postrelease) # True
print()
version = Version('2.5.5.dev3')
print(version.dev) # 3
print(version.is_devrelease) # True
- How do I compare version numbers in Python?
- packaging documentation



