Python:无效的ELF头导入cython编译库

时间:2016-12-19 16:39:08

标签: python cython elf

我的问题如下。我正在处理Ubuntu并拥有cython代码,我使用以下代码编译:

from distutils.core import setup
from Cython.Build import cythonize
import numpy

setup(
   ext_modules = cythonize("cython_accelerate.pyx"),
   include_dirs = [numpy.get_include()]
) 

编译工作正常。当我尝试导入生成的库(cython_accelerate.so)时,我收到以下错误:

  

无效的ELF标头。

如果我在Mac上执行完全相同的过程,一切都很完美:唯一的区别是库是使用不同的名称生成的(cython_accelerate.cpython-35m-darwin.so),但导入按预期工作而没有问题。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

我正在使用Ubuntu

这是一个毫无意义的陈述。可能你在x86_64系统上使用Ubuntu。

如果是这样,你的问题很可能是由于32位与64位不匹配造成的:你试图将32位cython_accelerate.so导入到64位Python进程中,反之亦然。

要验证这是原因,请运行

file `which python`
file /path/to/cython_accelerate.so