2013-05-13 27 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