由于Distutils的严格版本编号类,我无法安装cython。例如 binutils-2.18.50-20080109-2.tar.gz 不能与MinGW一起用于安装 cython。源代码文档说“这个版本编号系统的基本原理将在 distutils 文档中解释。” 我找不到理由。
我的问题:这个版本编号系统的基本原理是什么?
这只是 distutils 的另一个愚蠢之处。我个人在我必须使用的每台 Windows 机器上的 distutils 安装中删除了这个烦人的检查。
只要通过版本检查,安装另一个 mingw 版本就可以工作 - 但实际上,检查工具版本的整个想法没有多大意义。
我想这个想法是建议项目使用与 StrictVersion 类兼容的版本号以便于排序(即比较版本,以了解 1.0 比 1.0b 更新)。问题是它从未真正起飞,distutils 的原作者转向了其他项目。当 setuptools 作为 distutils 的一组新功能和猴子补丁启动时,它没有使用 Version 类,而是定义了一种算法来将任何版本号转换为可排序的表示。几年前,Tarek Ziadé 接管了 distutils 的维护和开发工作,并与 distutils 社区合作制定了一个 PEP,以定义新的版本号规范。这个 PEP,PEP 386,已经在 distutils2 中被接受和实施。它的定义目标是支持社区使用的功能(例如 alpha/beta/候选版本、发布后标记),并且仍然允许排序。它也比 setuptools 更受限制,但比 StrictVersion 和 LooseVersion 更有用。
你可以试试这个非官方的 MinGW 发行版,它有一个简单的安装过程,可以设置 distutils 以使用它来编译扩展。