【发布时间】:2014-07-07 03:09:25
【问题描述】:
我的程序需要导入xxx.so,而这个xxx.so文件是在Python2.4下编译的。
我想在Python2.7&Python2.4下运行我的程序,但是在Python2.7下import xxx.so时出错,我知道是与Python版本不匹配造成的。
我的问题:我应该编译 xxx.so 文件以匹配每个 Python 版本吗?
【问题讨论】:
标签: python c embed compatibility
我的程序需要导入xxx.so,而这个xxx.so文件是在Python2.4下编译的。
我想在Python2.7&Python2.4下运行我的程序,但是在Python2.7下import xxx.so时出错,我知道是与Python版本不匹配造成的。
我的问题:我应该编译 xxx.so 文件以匹配每个 Python 版本吗?
【问题讨论】:
标签: python c embed compatibility
C 扩展模块是特定于版本的。每个不同版本的 Python 都需要不同版本的扩展模块。您需要根据目标 Python 版本的标头和库从源链接编译扩展模块。
【讨论】:
是的,您应该使用匹配的 Python 版本使用相同的编译器对其进行编译,以确保 ABI 兼容性。
在 *nix 平台上这不是问题,编译器与操作系统捆绑在一起,但在使用许多不同编译器(mingw、visual studio 等)的 Windows 上可能会让您头疼。
Python C API 文档描述了官方构建使用的编译器。
【讨论】: