Python Distutils

0 投票
3 回答
831 浏览
提问于 2025-04-11 19:37

我在安装 cython 的时候遇到了问题,原因是 严格的版本编号规则 来自 Distutils。举个例子,binutils-2.18.50-20080109-2.tar.gz 这个文件不能和 MinGW 一起用来安装 cython。源代码文档上说:“这个版本编号系统的理由会在 distutils 文档中解释。”但我找不到这个理由。

我的问题是:这个版本编号系统的理由是什么?

3 个回答

0

我猜这个想法是建议项目使用一个和StrictVersion类兼容的版本号,这样可以方便地进行排序(也就是比较版本,比如知道1.0比1.0b新)。不过,这个想法并没有真正流行开来,最初负责distutils的作者也转向了其他项目。当setuptools作为distutils的新特性和修改版本开始时,它并没有使用版本类,而是定义了一种算法,可以把任何版本号转换成可以排序的形式。几年前,Tarek Ziadé接手了distutils的维护和开发,并和distutils社区一起制定了一个PEP,来定义新的版本号规范。这个PEP,叫PEP 386,已经被接受并在distutils2中实现。它的目标是支持社区使用的特性(比如alpha/beta/候选版本,发布后的标记等),同时还能进行排序。虽然它的限制比setuptools的要多,但比StrictVersion和LooseVersion要实用得多。

0

你可以试试这个非官方的MinGW版本,它的安装过程很简单,可以帮你设置distutils,让它用来编译扩展。

1

这只是distutils的又一个愚蠢之处。我个人在每台需要使用的Windows电脑上都会把这个烦人的检查去掉。

安装另一个mingw版本是可以的,只要它能通过版本检查——但是,实际上,检查工具版本的这个想法并没有太大意义。

撰写回答