2013-05-13 26 views
1

这个问题是关于Python在另一个程序中的集成。如果我链接到Python,我有一个名为python27.lib或更早的2.x版本的类似文件(例如python26.lib)的导入库。显然,Python 3.x稍微改变了规则,因为我在libs文件夹中找到python3.libpython33.lib在集成Python时需要匹配多少版本?

看看导入库的成员,看起来很清楚,例如2.6和2.7之间不会有兼容性。 但是,我是否可以假设Python 2.7.3的import lib可以使用较旧的Python 2.7 DLL,例如2.7.2还是2.7.1?我不会将Python与我的应用程序一起部署,而是希望基于已经设置的Python提供Python集成作为选项。

奖金的问题:给出在Python 3名称变更和python3.dll似乎包含函数的出口代理,我可以假设,对链接将python3.lib与开始与3.0任何的Python 3.x版工作的事实?

回答

2

Python的补丁级别与二进制兼容,即当您使用2.7.3进行链接时,二进制文件也可以与其他2.7.x版本一起使用。这在发布之间不起作用(也就是说,你的二进制文件不能用于Python 2.6或3.3)。

当您链接到python3.dll时,您可以使用每个python 3.x版本,但是您可以使用的C API有限:只能使用稳定的ABI(如here所述)。

+0

谢谢!你也有第一段的来源吗? – 0xC0000022L 2013-05-14 13:27:37

+0

不立即。这是CPython开发过程的一个副作用:微版本不应该引入新功能,并且在修补程序版本中更改ABI是一个很大的禁忌。修补程序版本的目标是使更新python安装成为可能,并确保一切正常运行(禁止发布中的意外错误,以及恰好依赖存在已修复错误的代码) – 2013-05-14 13:57:57

+1

您可以检查Python版本之间的二进制兼容性 - http://upstream.rosalinux.ru/versions/python.html – 2015-01-24 14:48:31