本节书摘来自异步社区《Python高手之路(第3版)》一书中的第1章,第1.3节,作者[法]Julien Danjou,王飞龙 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3 版本编号

可能你已经有所了解,Python生态系统正在对包的元数据进行标准化。其中一项元数据就是版本号。

PEP 440(http://www.python.org/dev/peps/pep-0440/) 针对所有的Python包引入了一种版本格式,并且在理论上所有的应用程序都应该使用这种格式。这样,其他的应用程序或包就能简单而可靠地识别它们需要哪一个版本的包。

PEP440中定义版本号应该遵从以下正则表达式的格式:

N[.N]+[{a|b|c|rc}N][.postN][.devN]

它允许类似1.2或1.2.3这样的格式,但需注意以下几点。

1.2等于1.2.0,1.3.4等于1.3.4.0,以此类推。

与N[.N]+相匹配的版本被认为是最终版本。

基于日期的版本(如2013.06.22)被认为是无效的。针对PEP440格式版本号设计的一些自动化工具,在检测到版本号大于或等于1980时就会抛出错误。

最终即将发布的组件也可以使用下面这种格式。

N[.N]+aN(如1.2a1)表示一个alpha版本,即此版本不稳定或缺少某些功能。

N[.N]+bN(如2.3.1b2)表示一个beta版本,即此版本功能已经完整,但可能仍有bug。

N[.N]+cN或N[.N]+rcN(如0.4rc1)表示候选版本(常缩写为RC),通常指除非有重大的bug,否则很可能成为产品的最终发行版本。尽管rc和c两个后缀含义相同,但如果二者同时使用,rc版本通常表示比c更新一点。

通常用到的还有以下这些后缀。

.postN(如1.4.post2)表示一个后续版本。通常用来解决发行过程中的细小问题(如发行文档有错)。如果发行的是bug修复版本,则不应该使用.postN而应该增加小的版本号。

.devN(如2.3.4.dev3)表示一个开发版本。因为难以解析,所以这个后缀并不建议使用。它表示这是一个质量基本合格的发布前的版本,例如,2.3.4.dev3表示2.3.4版本的第三个开发版本,它早于任何的alpha版本、beta版本、候选版本和最终版本。

这一结构可以满足大部分常见的使用场景。

注意

你可能已经听说过语义版本(http://semver.org/) ,它对于版本号提出了自己的规则。这一规范和PEP 440部分重合,但二者并不完全兼容。例如,语义版本对于预发布版本使用的格式1.0.0.-alpha+001就与PEP 440不兼容。

如果需要处理更高级的版本号,可以考虑一下PEP 426(http://www.python.org/dev/ peps/pep-0426)中定义的源码标签,这一字段可以用来处理任何版本字符串,并生成同PEP要求一致的版本号。

许多分布式版本控制系统(Distributed Version Control System,DVCS)平台,如Git和Mercurial,都可以使用唯一标识的散列字符串①作为版本号。但遗憾的是,它不能与PEP 440中定义的模式兼容:问题就在于,唯一标识的散列字符串不能排序。不过,是有可能通过源码标签这个字段维护一个版本号,并利用它构造一个同PEP 440兼容的版本号的。

提示

pbr(即Python Build Reasonableness,https://pypi.python.org/pypi/pbr) 将在6.2节中讨论,它可以基于项目的Git版本自动生成版本号。

python高手之路第三版_《Python高手之路(第3版)》——1.3 版本编号-阿里云开发者社区...相关推荐

  1. python聊天小程序支持私聊和多人_Python实现多人在线匿名聊天的小程序-阿里云开发者社区...

    最近看到好多设计类网站,都提供了多人在线匿名聊天的小功能,感觉很有意思,于是基于python的django框架自己写了一个,支持手动实时更名,最下方提供了完整的源码. 在线聊天地址(无需登录,开一个窗 ...

  2. python爬虫进程和线程_python爬虫番外篇(一)进程,线程的初步了解-阿里云开发者社区...

    整理这番外篇的原因是希望能够让爬虫的朋友更加理解这块内容,因为爬虫爬取数据可能很简单,但是如何高效持久的爬,利用进程,线程,以及异步IO,其实很多人和我一样,故整理此系列番外篇 一.进程 程序并不能单 ...

  3. python 页眉页脚_python自动化办公:玩转word之页眉页脚秘笈-阿里云开发者社区

    节将就python操作word的页眉页脚技巧做深入介绍. 使用页眉和页脚 python操作word的页眉页脚技巧做深入介绍 Word支持页眉和页脚.页眉是出现在每个页面的上边距区域中的文本,与文本主体 ...

  4. mysql safe 关闭_新手请教,mysqld经常自动关闭是什么原因?-问答-阿里云开发者社区-阿里云...

    错误日志如下: 61103 22:12:15 mysqld_safe Number of processes running now: 0 161103 22:12:15 mysqld_safe my ...

  5. mysql 客户服务号获取_《MySQL排错指南》——1.4 获取查询信息-阿里云开发者社区...

    本节书摘来自异步社区出版社<MySQL排错指南>一书中的第1章,第1.4节,作者:[美]Sveta Smirnova(斯维特 斯米尔诺娃),更多章节内容可以访问云栖社区"异步社区 ...

  6. itext设置pdf的尺寸_如何获取pdf文档iText 7的页面大小-问答-阿里云开发者社区-阿里云...

    我在iText 7中有一个Java程序,可以接收JSON数据并生成一个PDF文档(带有页眉和页脚),该文档可以很好地处理clientData注释中的变量中的数据,但是当在无注释clientData中使 ...

  7. python部署到服务器上解析不到模块_python socket模块放到服务器上就跑不了了 -问答-阿里云开发者社区-阿里云...

    话不多说直接放代码: 先说一下,下面出现的101.133.229.251是我服务器IP 客户端: import socket s = socket.socket(socket.AF_INET,sock ...

  8. qiankun 传统项目配置_飞猪微前端实践:统一运营工作台的解决方案-阿里云开发者社区...

    作者:侑夕 飞猪一体化运营工作台一期工作经过 3 个月的开发终于内部开始使用,期间我们面向运营场景,基于微前端与 SDK 化的一体化集成方案,完成 4 大场景 10 余个平台的接入和配置打通,并对数百 ...

  9. mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区

    关于MYSQL中FLOAT和DOUBLE类型的存储 重庆八怪 2016-04-12 844浏览量 简介: 关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方 ...

最新文章

  1. 零基础入门jQuery视频教程
  2. 使用bottle进行web开发:get的参数传递,form数据传递等
  3. 安徽师范大学信息计算机学院,安徽师范大学数学计算机科学学院导师介绍:罗永龙...
  4. 一文搞清楚,QPS、TPS、并发用户数、吞吐量
  5. 使用nginx动静分离后,druid被拦截的解决方法
  6. 【机器学习】特征提取
  7. 【信息安全】ECC加密算法入门介绍
  8. mysql自定义函数重载_python pyMysql 自定义异常 函数重载
  9. java json clone_再谈java clone 以及 浅/深拷贝
  10. 句法分析(syntactic parsing)在NLP领域的应用是怎样的?
  11. php xheditor 上传图片,WordPress投稿集成xheditor编辑器(支持图片上传)
  12. sap的pod确认_SAP POD 在途库存 SIT
  13. 卷积和反卷积输出的计算公式
  14. Hi3861 ADC驱动 如何使用开发板上的3个按键
  15. 生物特征识别技术的标准化工作
  16. 内容领先地位无法撼动,腾讯音乐与环球续约将共建新厂牌
  17. selenium 更新 chromedriver 驱动
  18. stm32 串口2空闲中断死机_STM32串口之空闲中断
  19. Python 编辑器哪个好用
  20. vb读取计算机mac地址,Re:在VB中如何取得网卡的mac地址?

热门文章

  1. 使用Spring Data R2DBC进行异步RDBMS访问
  2. 玩JDK 12的Switch表达式
  3. [MEGA DEAL]完整的Java编程训练营(94%)
  4. 琥珀项目:较小的,面向生产力的Java语言功能
  5. 自动生成优化的Java类专业知识
  6. javaone_JavaOne 2012:Lambda之路
  7. 更改日志级别_如何在运行时更改日志记录级别
  8. JBoss EAP 7快速入门
  9. morphia_Morphia和MongoDB:不断发展的文档结构
  10. apache.camel_Apache Camel 2.9发布–十大变化