在軟體版本快速迭代的過程中,經常會遇到一些介面變化問題。而如果需要相容舊版本的話,就需要使用到版本判斷的方法。判斷清楚版本號屬於哪一個區間,再對不同的版本號區間採取不同的演算法或者執行策略。Python中預先內置的LooseVersion就是一個很好的版本號比對工具,不僅僅可以對相同位數或者相同類型的... ...
技術背景
Python是一門極其熱門、極其靈活的開發語言,其更新迭代的速度也非常的快速。有時候我們遇到不同的軟體版本不同方法處理的情況,此時就需要用到版本號比對的工具。舉一個例子說,我們要在python代碼中區分numpy版本在1.21.6之前和之後的版本。雖然我們可以自己手寫一個軟體版本號識別和比對的簡單函數,但是相比之下,LooseVersion的方案會更加的成熟和方便一些。本文主要介紹LooseVersion的一些相關使用場景。
查看軟體版本號
在python中我們可以使用兩種方法來獲取一個軟體的版本號。如果是在命令行下,我們可以使用pip
來查看版本號:
$ python3 -m pip show numpy
Name: numpy
Version: 1.21.6
Summary: NumPy is the fundamental package for array computing with Python.
Home-page: https://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email:
License: BSD
Location: /home/dechin/anaconda3/envs/mindspore-latest/lib/python3.7/site-packages
Requires:
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__
來進行查看:
In [1]: import numpy as np
In [2]: np.__version__
Out[2]: '1.21.6'
上面的python案例在ipython模式下運行。
LooseVersion的使用
LooseVersion(version)
可以直接用於比較大小,比如LooseVersion(version2)>LooseVersion(version1)
,會返回一個布爾值,其引用方法如下:
In [1]: from distutils.version import LooseVersion
In [2]: import numpy as np
In [3]: LooseVersion(np.__version__) >= LooseVersion('1.21.6')
Out[3]: True
其返回值為真,表示當前的numpy版本號是更新的。除了標準的版本號比對之外,還可以進行一些錯位的比對:
# 末位版本號領先
In [4]: LooseVersion('1.21.6') >= LooseVersion('1.21.0')
Out[4]: True
# 中間位版本號落後
In [5]: LooseVersion('1.21.6') >= LooseVersion('1.22.0')
Out[5]: False
# 多一位版本號表示領先
In [6]: LooseVersion('1.21.6') >= LooseVersion('1.21')
Out[6]: True
# 落後一個alpha迭代版本
In [7]: LooseVersion('1.21.6') >= LooseVersion('1.21.6a')
Out[7]: False
# 多兩位版本號領先
In [8]: LooseVersion('1.21.6') >= LooseVersion('1')
Out[8]: True
# 首位版本號落後
In [9]: LooseVersion('1.21.6') >= LooseVersion('2')
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