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

这篇具有很好参考价值的文章主要介绍了在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文章来源地址https://www.toymoban.com/news/detail-637836.html

到了这里,关于在Python中使用LooseVersion进行软件版本号比对的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 零代码编程:PDF文件名和Excel数据进行比对找不同

    F盘“北交所招股说明书”文件夹下有150个文件; F盘”北证A股20230703.xlsx”表格中证券名称有200多个; 现在想找出文件夹下的哪些证券名称不在表格里面。 在ChatGPT中输入提示词: 写一段Python程序: F盘“北交所招股说明书”文件夹下有很多PDF文件,获取其标题名称,保存到

    2024年02月15日
    浏览(46)
  • 新版Selenium使用Python对web页面多个相同Class Name属性的元素进行选择&新老版本对比

    在使用新版的Selenium对网页代码中存在相同class name属性的元素进行定位,在定位的过程中发现使用先前的定位方法已经无法成功对所要操作组件进行定位,这是什么问题呢?下面为大家进行解答。 大概为了统一编写格式,方便阅读理解,新版本的Selenium出来后,摒弃了旧版的

    2024年02月04日
    浏览(51)
  • 生物学经典blast比对算法,R语言和Python如何实现?

    做生物的同学肯定听说过blast比对这个方法,一般在NCBI等网站上可以在线进行比对,也可以在本地服务器进行比对,那么blast算法究竟是怎么实现对不同序列的比对呢? 本文分享经典blast算法的基础原理,以及通过R语言和Python实现这个算法,不依赖网站自己进行序列比对。

    2024年02月15日
    浏览(42)
  • Java使用opencv实现人脸识别、人脸比对

    1. opencv概述 OpenCV是一个开源的计算机视觉库,它提供了一系列丰富的图像处理和计算机视觉算法,包括图像读取、显示、滤波、特征检测、目标跟踪等功能。 opencv官网:https://opencv.org/ opencv官网文档:https://docs.opencv.org/4.7.0/index.html 参考教程1:https://www.w3cschool.cn/opencv/ 参考教

    2024年02月08日
    浏览(53)
  • 关于使用Gitee进行版本管理——使用IDE

    1.下载并安装Git版本控制工具(Git下载与安装_git官网下载-CSDN博客) 2.下载并安装Android Studio(参考对应的Android studio安装步骤) 3.注册Gitee账号(参考对应gitee(码云)注册以及最简单基础的操作大全_码云注册-CSDN博客) 1. 新建仓库 登录 Gitee 账号之后,点击新建仓库:

    2024年02月21日
    浏览(45)
  • 防火墙软件版本过旧:使用的防火墙软件版本过旧,无法支持新的安全特性

    随着网络攻击的日益增多和新型恶意软件的不断涌现,企业和个人用户越来越关注网络安全问题. 为了保护系统和数据安全, 安装并维护一款可靠的防火墙是必要的手段之一. 但许多用户在遇到以下问题时可能会感到困惑:为什么我的系统提示说需要更新防火牆软件?有什么办法

    2024年02月20日
    浏览(48)
  • 使用openCV比对任意两张图片的相似度(亲测较准确)

    方案:使用openCV中的直方图算法做对比。测试效果较好。 代码中提供了均方差算法(MSE)、结构相似性指数算法(SSIM)、峰值信噪比(PSNR)、直方图算法。其中直方图效果最好 Exception in thread \\\"main\\\" java . lang . UnsatisfiedLinkError : no opencv_java455 in java . library . path Exception in threa

    2024年02月16日
    浏览(37)
  • Visual Studio2022 使用git进行代码版本管理

    存储库位置: 就是自己创建的Git仓库的位置,例如,我的远程仓库在Gitee上面,找到远程仓库要下载的项目,点克隆,把HTTPS 路径复制,粘贴到存储库位置。 路径: 克隆下来的项目,存储在本地仓库的目录(本地仓库) 拉取和提取的区别: 拉取: 如果当前存在 未同步的代码

    2024年02月08日
    浏览(52)
  • python用 xlwings库对Excel进行 字体、边框设置、合并单元格, 版本转换等操作

    xlwings 其他的一些单元格读取写入操作网上很多, 下面就写些如何设置单元格的  字体对齐,字体大小、边框, 合并单元格,  这些设置。 颜色索引: 无色 = -4142,   自动 = -4105,  黑色 = 1, 白色 = 2 ,    红色 = 3,    鲜绿 = 4, 蓝色 = 5 ,    黄色 = 6,    

    2024年02月11日
    浏览(42)
  • 使用Git对Word或Excel文件进行版本管理

    我们在使用Word编辑文档,或者使用Excel表格计算时,时常想,要是有个版本管理工具能把我们的文档或表格管理起来就好了,好让我们可以“昨日重现”,而不至人为失误而后悔不迭。 git就是一个使用便捷,功能强大的工具,在编程界可谓鼎鼎大名,可以说是程序员的必备工

    2024年02月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包