python和PEP 440 - 这是什么?

时间:2014-12-15 21:49:51

标签: 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.

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

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

3 个答案:

答案 0 :(得分:6)

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

特别是,如果2014.2.2.dev5.g...应该在2014.2.2.dev5之前或之后出现,则未指定,因为规则并未说明g应该包含的内容。

这不太可能对你造成太大影响;因为要么dev发布;两者都严格地在2014.2.12014.2.2

之间

答案 1 :(得分:5)

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

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

答案 2 :(得分:0)

这个警告不是您真正需要担心的事情,而是对开发人员的更多警告。

它基本上意味着有一个模块可以识别版本号(哪些更新,等等)用于跟踪PyPi(python的包主机)的依赖关系,并且给定版本的格式为n&认识到了。

如果你等到下一个补丁,它就会消失。