《Python高手之路(第3版)》——1.3 版本编号

简介:

本节书摘来自异步社区《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]+cNN[.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版本自动生成版本号。

相关文章
|
8月前
|
人工智能 数据安全/隐私保护 Python
小红书图文生成器,小红书AI图文生成工具,python版本软件
Pillow库自动生成符合平台尺寸要求的配图7;3)利用Playwright实现自动化发布流程6。
|
9月前
|
Ubuntu 安全 API
Python3.14正式支持Free Threaded版本!
Python 社区迎来历史性时刻!Python 3.14 正式将无 GIL 构建列为受支持选项,标志着 Free‑Threaded Phase II 启动。本文将深入解析 PEP 779 规定的支持标准、3.14.0b3 版本的新变化,以及这对Python开发者意味着什么。文末还有小彩蛋哦!
1444 87
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
694 7
|
8月前
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
2225 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
8月前
|
XML 存储 Java
Python-docx编号列表解析:从XML迷宫到结构化数据的破局之道
本文深入解析了Word文档中自动编号的存储机制及解析难题,探讨了其在技术处理中的障碍,并通过三种实战方案对比,帮助开发者高效提取结构化数据。内容涵盖底层XML结构、常见问题解决方案及性能优化技巧,适用于合同条款、文档自动化处理等场景。
566 0
|
8月前
|
XML 存储 缓存
Python-docx编号列表解析:从XML迷宫到结构化数据的破局之道
Word文档中的自动编号功能虽便捷,却在技术处理时常成为障碍。本文深入解析Word文档的XML结构,揭示编号信息的存储机制,并提供多种基于Python的解决方案,涵盖跨平台解析、性能优化及固定模板处理,助力开发者突破编号解析难题,实现合同条款等内容的结构化提取与处理。
365 0
|
Ubuntu Shell Linux
pyenv 管理多个 Python 版本(1)
pyenv 管理多个 Python 版本(1)
569 86
pyenv 管理多个 Python 版本(1)
|
Shell Python
使用 pyenv 来管理多个 Python 版本(2)
使用 pyenv 来管理多个 Python 版本(2)
485 71
使用 pyenv 来管理多个 Python 版本(2)
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
699 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本

推荐镜像

更多