翼度科技»论坛 编程开发 python 查看内容

在Python中使用LooseVersion进行软件版本号比对

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
技术背景

Python是一门极其热门、极其灵活的开发语言,其更新迭代的速度也非常的快速。有时候我们遇到不同的软件版本不同方法处理的情况,此时就需要用到版本号比对的工具。举一个例子说,我们要在python代码中区分numpy版本在1.21.6之前和之后的版本。虽然我们可以自己手写一个软件版本号识别和比对的简单函数,但是相比之下,LooseVersion的方案会更加的成熟和方便一些。本文主要介绍LooseVersion的一些相关使用场景。
查看软件版本号

在python中我们可以使用两种方法来获取一个软件的版本号。如果是在命令行下,我们可以使用pip来查看版本号:
  1. $ python3 -m pip show numpy
  2. Name: numpy
  3. Version: 1.21.6
  4. Summary: NumPy is the fundamental package for array computing with Python.
  5. Home-page: https://www.numpy.org
  6. Author: Travis E. Oliphant et al.
  7. Author-email:
  8. License: BSD
  9. Location: /home/dechin/anaconda3/envs/mindspore-latest/lib/python3.7/site-packages
  10. Requires:
  11. Required-by: torchvision, torch, tensorboard, numba, netCDF4, gsd, GridDataFormats, cftime, Xponge, xarray, silx, scipy, scikit-learn, rdkit, pandas, mindspore, mindspore-cuda11-dev, matplotlib, h5py, fabio, biotite, biopython
复制代码
而如果是在python程序的内部,我们需要通过package.__version__来进行查看:
  1. In [1]: import numpy as np
  2. In [2]: np.__version__
  3. Out[2]: '1.21.6'
复制代码
上面的python案例在ipython模式下运行。
LooseVersion的使用

LooseVersion(version)可以直接用于比较大小,比如LooseVersion(version2)>LooseVersion(version1),会返回一个布尔值,其引用方法如下:
  1. In [1]: from distutils.version import LooseVersion
  2. In [2]: import numpy as np
  3. In [3]: LooseVersion(np.__version__) >= LooseVersion('1.21.6')
  4. Out[3]: True
复制代码
其返回值为真,表示当前的numpy版本号是更新的。除了标准的版本号比对之外,还可以进行一些错位的比对:
  1. # 末位版本号领先
  2. In [4]:  LooseVersion('1.21.6') >= LooseVersion('1.21.0')
  3. Out[4]: True
  4. # 中间位版本号落后
  5. In [5]:  LooseVersion('1.21.6') >= LooseVersion('1.22.0')
  6. Out[5]: False
  7. # 多一位版本号表示领先
  8. In [6]:  LooseVersion('1.21.6') >= LooseVersion('1.21')
  9. Out[6]: True
  10. # 落后一个alpha迭代版本
  11. In [7]:  LooseVersion('1.21.6') >= LooseVersion('1.21.6a')
  12. Out[7]: False
  13. # 多两位版本号领先
  14. In [8]:  LooseVersion('1.21.6') >= LooseVersion('1')
  15. Out[8]: True
  16. # 首位版本号落后
  17. In [9]:  LooseVersion('1.21.6') >= LooseVersion('2')
  18. Out[9]: False
复制代码
应该说LooseVersion的功能基本涵盖了版本号演化的大部分规则,在实际场景中使用Python内置的LooseVersion可能会比自己写一个版本比对算法更加来的方便。
总结概要

在软件版本快速迭代的过程中,经常会遇到一些接口变化问题。而如果需要兼容旧版本的话,就需要使用到版本判断的方法。判断清楚版本号属于哪一个区间,再对不同的版本号区间采取不同的算法或者执行策略。Python中预先内置的LooseVersion就是一个很好的版本号比对工具,不仅仅可以对相同位数或者相同类型的版本号进行比对,还可以进行错位的版本号比对。当然,需要注意的是,LooseVersion中对于输入的版本号类型还是有要求的,比如版本号中的每一位的开头必须是一个数字,版本号的每一位都不能以字母开头,否则无法进行比对。
版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/loose-version.html
作者ID:DechinPhy
更多原著文章请参考:https://www.cnblogs.com/dechinphy/
打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
腾讯云专栏同步:https://cloud.tencent.com/developer/column/91958
CSDN同步链接:https://blog.csdn.net/baidu_37157624?spm=1008.2028.3001.5343
51CTO同步链接:https://blog.51cto.com/u_15561675

来源:https://www.cnblogs.com/dechinphy/p/loose-version.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具