python和PEP440-关于PEP440的警告有多严重?

python和PEP440-关于PEP440的警告有多严重?,python,openstack,devstack,Python,Openstack,Devstack,我必须使用devstack infrastructure安装OpenStack,以便使用open vSwitch进行实验,并在日志中发现: /usr/lib/python2.7/site-packages/setuptools/dist.py:298: UserWarning: The version specified ('2014.2.2.dev5.gb329598') is an invalid version, this may not work as expected with new

我必须使用devstack infrastructure安装OpenStack,以便使用open vSwitch进行实验,并在日志中发现:

/usr/lib/python2.7/site-packages/setuptools/dist.py:298: UserWarning: The version specified ('2014.2.2.dev5.gb329598') is an invalid version, this may not work as expected with newer versions of setuptools, pip, and PyPI. Please see PEP 440 for more details.

我在谷歌上搜索发现,PEP代表Python增强建议,而PEP 440显然是一个特殊的建议,但我想知道这个警告有多严重,PEP 440定义了什么?

作为最终用户,这不应该是您的严重担忧,它只是意味着,由于指定的版本号不符合python包版本的规则,因此python打包系统无法可靠地识别此包的其他版本在它之前或之后

特别是,没有规定
2014.2.2.dev5.g..
是否应在
2014.2.2.dev5
之前或之后,因为规则没有说明
g
的含义


这不太可能对你有太大的影响;因为两者都将是
dev
版本;严格来说,这两个警告都在
2014.2.1
2014.2.2
之间。这个警告不是你真正需要担心的,它更多的是对开发者的警告

它基本上意味着有一个模块来识别版本号(哪些是最新的,等等),用于跟踪PyPi(python的包主机)的依赖项,并且给定的版本是一种无法识别的格式


如果您只是等待下一个补丁,它就会消失。

每个Python包都可以指定自己的版本。除此之外,PEP440还指出,版本规范应存储在模块的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
属性中,它应该是一个字符串,并且应该由主要版本号、次要版本号和内部版本号组成,由点分隔(例如
'2.7.8'
)给出或接受一些其他可选的变化。在您正在安装的其中一个软件包中,开发人员似乎使用后缀
'.gb329598'
破坏了这些建议。警告指出,在某些情况下,这可能会混淆某些包管理器(
setuptools
和朋友)

PEP440似乎确实允许将任意“本地版本标签”附加到版本说明符上,但这些标签必须贴上
'+'
,而不是
'.

Re:“开发人员似乎破坏了这些建议”--事实上,这些建议经过了修改,开发人员现在正在破坏它们。Re“构建编号”。您正确地说有可选的变体,但N(.N)*部分称为发布段,它们建议(“major.minor.micro”).build number是关于构建和打包的,而不是关于版本控制的。build number是否可以看起来像micro并被称为本地版本控制信息…不知道,但我认为构建不应该与版本混为一谈。