Python次要版本之间的控制盘不兼容

Python次要版本之间的控制盘不兼容,python,python-wheel,python-packaging,Python,Python Wheel,Python Packaging,我在PyPi上发布了一个支持Python3.6+的包,并希望构建尽可能少的轮子 我已经读过了,并看了一个例子。阅读,也很有见地 这里有一个问题:为什么轮子转发与Python的小版本更改不兼容 例如,从3.5升级到3.6会带来f字符串。但似乎用Python3.5构建的轮子(不使用f字符串)应该能够在Python3.6环境中正常运行。这里有什么问题?以2和3兼容的方式用纯Python编写的代码可以在通用轮子中发布。一个轮子,适用于所有Python版本。例如: 但包含用C编写的模块的项目必须针对每个平

我在PyPi上发布了一个支持Python3.6+的包,并希望构建尽可能少的轮子

我已经读过了,并看了一个例子。阅读,也很有见地

这里有一个问题:为什么轮子转发与Python的小版本更改不兼容


例如,从3.5升级到3.6会带来f字符串。但似乎用Python3.5构建的轮子(不使用f字符串)应该能够在Python3.6环境中正常运行。这里有什么问题?

以2和3兼容的方式用纯Python编写的代码可以在通用轮子中发布。一个轮子,适用于所有Python版本。例如:

但包含用C编写的模块的项目必须针对每个平台(处理器架构和32/64位)、操作系统和Python版本分别发布,因为C代码的编译方式必须不同。例如:


注:完整披露:我是这两个示例项目的维护者。

Python3.6中运行的Python3.5代码是向前兼容的,对吗?Python3.6代码(没有f字符串)将(可能)向后兼容Python3.5。我把它倒过来了吗?对。我的问题是,如果我的包在Python3.5上运行良好,我是否也需要发布一个3.6控制盘,或者如果用户运行3.6,3.5控制盘是否足够?例如,NumPy与Python 3.5+兼容,但它们为每个次要版本发布控制盘。嗯,因此每个Python次要版本编译C代码的方式都不同?这不是必需的,但
pip
和二进制控制盘格式的设计者决定不冒险,也不强制每个次要Python版本发布新的控制盘。与修复不兼容相比,释放新的控制盘更简单、痛苦更少。