【发布时间】:2017-10-19 18:27:42
【问题描述】:
偶然我注意到python标准库的csv和re模块都有它们的.__version__属性:
>>> import re, csv
>>> re.__version__
'2.2.1'
>>> csv.__version__
'1.0'
这让我很惊讶,因为它们是标准库的一部分,所以我希望它们的版本由sys.version(和sys.version_info)定义。
我注意到 Python 2.7.13 和 3.6.1 的属性值是相同的,尽管模块发生了变化。
它们只是一种“代码化石”还是它们有某种意义,程序员应该注意它们的价值观?
【问题讨论】:
-
我认为您将 Python 版本与库版本混合在一起。例如,如果您使用 Linux-3.16 操作系统,这并不意味着您必须在其上运行 Firefox 3 才能浏览网页。版本号不是全局的。
-
我猜不是答案,但是:“根据具体情况,标准库模块也以独立形式发布,用于其他 Python 版本,可能包含模块版本号当包含在标准库中时,并且在单独打包时应该包含版本号。" (source)
-
此外,标准库通常是具有特定版本号的包的集合。但是软件包的开发仍在继续。因此,您可以决定使用
re的“夜间构建”版本,它可能提供一些实验性功能,但尚未经过全面测试以将其包含在标准库中。通常标准库旨在选择或多或少可靠的高质量包。 -
@WillemVanOnsem 我想念这个比喻吗?如果我有 same 版本的模块(
csv的情况下为 1.0),我希望它的行为相同。文档表明 Python 2.7 和 Python 3.6 之间的两个模块都发生了很多变化。
标签: python python-2.7 python-3.x version standard-library