python和PEP 440 - 这是什么?

Mar*_*ark 5 python openstack devstack

我不得不使用devstack基础设施安装OpenStack,用于开放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.
Run Code Online (Sandbox Code Playgroud)

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

PS.我对python几乎一无所知.

Sin*_*ion 6

作为最终用户,这不应该是一个严重的问题,它只是意味着,因为指定的版本号不符合python包版本的规则,python包装系统无法可靠地辨别哪个其他版本的这个包在它之前或之后.

特别是,未指定是否2014.2.2.dev5.g... 应该在之前或之后2014.2.2.dev5,因为规则没有说明g应该是什么意思.

这不太可能对你造成太大影响; 因为要么将要dev发布; 两者都严格地介于2014.2.1和之间2014.2.2


jez*_*jez 5

每个Python软件包都可以指定自己的版本。PEP440表示,除其他事项外,版本规范应存储在__version__模块的属性中,它应该是字符串,并且应由主版本号,次要版本号和内部版本号组成,并用点号(例如'2.7.8')给定或采取其他一些可选的变体。在要安装的其中一个软件包中,开发人员似乎使用后缀破坏了这些建议'.gb329598'。警告说,这可能会使某些程序包管理器(setuptools和朋友)在某些情况下感到困惑。

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

  • PEP440 没有提及模块中的“__version__”属性。 (2认同)