15

我不得不使用 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.

我搜索了一下,发现 PEP 代表 Python Enhancement Proposal 而 PEP 440 显然是一个特殊的提案,但我想知道这个警告有多严重,PEP 440 定义了什么?

4

3 回答 3

8

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

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

于 2014-12-15T22:04:19.530 回答
7

作为最终用户,这对您来说不应该是一个严重的问题,它只是意味着,由于指定的版本号不符合 python 包版本的规则,python 打包系统无法可靠地识别哪些其他版本的这个包在它之前或之后。

特别是,它没有指定 if2014.2.2.dev5.g... 应该在之前还是之后2014.2.2.dev5,因为规则没有说明应该是什么g意思。

这不太可能对您产生太大影响;因为两者都将dev发布;两者都严格介于2014.2.12014.2.2

于 2014-12-15T22:01:39.363 回答
0

这个警告不是你真正需要担心的,它更像是对开发人员的警告。

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

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

于 2014-12-15T22:01:54.967 回答