在使用pip(python),webpack(js)等包管理工具的时候,经常需要约束第三方软件包的版本,比如在使用python的包管理工具pip的时候,常用做法是把第三方依赖包的版本都放入requirements.txt这个文件中,这样再次在其他环境安装应用程序的时候就可以使用一行命令(pip install -r requirements.txt)自动下载相关依赖。而文件中的内容就是这篇文章的重点:如何约束包的版本。
先看一个requirements.txt例子
django<2
ldap~=1.0.2
django_auth_ldap~=1.7
requests~=2.19
simplejson~=3.16
marathon~=0.10
ldap3~=2.5
我们可以清晰的看到左侧是包(package)的名字,中间是约束规则,右侧是版本号。
包的名字和版本不难理解,中间的这些符号是什么意思呢?
就说一些简单常用的把。
-
: 依赖包的版本大于某个版本
- <: 依赖包的版本小于某个版本
- ~=: 依赖包的版本约等于某个版本
- ==: 依赖包的版本等于某个版本
除了~=之外都不难理解,所谓的约等于是指大致的版本号满足要求即可。
比如一个依赖包名为xxx的版本为2.5.2,如果你的约束条件是 xxx~=2.5,这样也是满足条件的。
如果懂得正则表达式的话就更好理解了,相当于2.5.*,意思是说只要是2.5开头的版本都可以。
我说的这些是工作中用到的,仅仅是皮毛,想了解更多语义化版本的问题可以看下面的网站。
传送门:语义化版本
网友评论