首页 > 编程语言 >在Python中使用LooseVersion进行软件版本号比对

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

时间:2023-08-10 16:46:14浏览次数:65  
标签:版本号 LooseVersion Python https 1.21 numpy Out

技术背景

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

标签:版本号,LooseVersion,Python,https,1.21,numpy,Out
From: https://www.cnblogs.com/dechinphy/p/loose-version.html

相关文章

  • python与selenium
    seleniumIDE脚本语言记录(录制) 屏幕操作(回放)seleniumRC自动化脚本selenium GRID分布式定位页面元素八种方式定位表格定位某个单元格 定位表格的子元素定位网页:静态网页动态网页......
  • RedHat:安装Python3.7
    学习自:rhel安装python3.7_redhat安装python3_weixin_44282127的博客-CSDN博客1、准备工作以下过程需要以用户角度开展:su-用户1)创建存放安装包的文件夹mkdir/opt/python2)去Python官网下载所需的python版本(这里以3.7.16为例)①选择Linux ②找到对应版本的python......
  • 盘点一个列表相加的Python基础题目
    大家好,我是皮皮。一、前言前几天在明佬的Python群【dq】问了一个Python列表基础处理的问题,一起来看看吧。下图是他的原始列表,想通过左边的列表,得到右边的合并列表。二、实现过程这里【流水线】和【hclw】大佬给了一个答案,如下图所示:如此顺利地解决了粉丝的问题。后来他自......
  • 用于地理空间数据分析的 5 个 Python 包
    推荐:使用NSDT场景编辑器助你快速搭建可编辑的3D应用场景介绍地理空间数据分析在城市规划、环境研究、农业和运输行业中至关重要。不断增长的需求导致越来越多地使用Python包来满足各种地理数据分析要求,例如分析气候模式,调查城市发展或跟踪疾病传播等。评估和选择具有快速处理、......
  • # yyds干货盘点 # 盘点一个列表相加的Python基础题目
    大家好,我是皮皮。一、前言前几天在明佬的Python群【dq】问了一个Python列表基础处理的问题,一起来看看吧。下图是他的原始列表,想通过左边的列表,得到右边的合并列表。二、实现过程这里【流水线】和【hclw】大佬给了一个答案,如下图所示:如此顺利地解决了粉丝的问题。后来他自己也写了个......
  • python读取xml文件
    Python有三种方法解析XML:SAX,DOM,以及ElementTree,本博客主要是讲解DOM和ElementTreeDOM解析方法:xml文件解析首先将xml文件加载进内存,然后读取文件中的内容.在内存将文件以树的结构进行保存,树根在上,树枝在下,整个xml文件被封装为Document对象,文件中的标签节点被封装为No......
  • Windows11安装python模块transformers报错Long Path处理
    Windows11安装python模块transformers报错,报错信息如下ERROR:CouldnotinstallpackagesduetoanOSError:[Errno2]Nosuchfileordirectory:'C:\\Users\\27467\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\LocalCac......
  • 爬虫框架的选择与对比:Python爬虫框架的比较与评估
    爬虫框架的选择与对比:Python爬虫框架的比较与评估Hey大家好!作为一名专业的隧道代理供应商,我今天要和大家分享一些关于爬虫框架的知识。在开发爬虫项目时,选择一个合适的框架非常重要,它可以提高开发效率、简化操作并提供丰富的功能。Python作为一门流行的编程语言,拥有许多优秀的爬虫......
  • 提升Python运行速度的必备工具清单
    提升Python运行速度的必备工具清单大家好呀!今天我要给大家分享一下可以让Python变得更快的工具清单。可能有些小伙伴一直在为Python的执行速度苦恼,今天就给大家分享一些实用的工具,可能能够帮到你哦!1.PyPy:PyPy是一个用JIT(即时编译)技术实现的Python解释器,相比于传统的CPython解释器,它......
  • 如何在python中使用pywebcopy克隆网页?
    Python提供了Pywebcopy模块,允许我们将整个网站下载并存储到我们的机器上,包括所有图像,HTML页面和其他文件。在这个模块中,我们有一个函数,即 save_webpage(),它允许我们克隆网页。安装pywebcopy模块首先,我们必须使用以下代码在python环境中安装pywebcopy模块。pip install ......