cimport numpy没有在cython中工作;错误信息不清楚(对我而言)

时间:2013-11-16 19:29:45

标签: python numpy cython

我是cython(和python)的新手,我试图以我可以定义变量类型的方式导入numpy。我的理解是我必须使用“cimport numpy”,然而,它失败了,我无法从错误消息中得到任何结果。这是我的代码归结为关键部分:

此时我的实际模块除了以下内容外还包括:

cimport numpy as np

这是我的setup.py:

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

setup(
name = "test",
ext_modules = cythonize('testcimport.pyx'),
)

这是我在编译时得到的结果:

  

在[1]中:%运行setup.py build_ext --inplace

     

编译testcimport.pyx因为它   改变。 Cythonizing testcimport.pyx运行build_ext构建   'testcimport'扩展名gcc -fno-strict-aliasing -fno-common -dynamic   -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -DNDEBUG -g -O3 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -I / Applications / Canopy.app / appdata / canopy-1.1 .0.1371.macosx-x86_64的/ Canopy.app /内容/包含/ python2.7   -c testcimport.c -o build / temp.macosx-10.6-x86_64-2.7 / testcimport.o发生异常,使用%tb查看完整的回溯。

     

SystemExit:错误:命令'gcc'以退出状态1

失败      

在[2]中:%tb

     

----------------------------------------------- ---------------------------- SystemExit Traceback(最近的电话   持续)   /Applications/Canopy.app/appdata/canopy-1.1.0.1371.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/IPython/utils/py3compat.pyc   在execfile中(fname,* where)       181其他:       182 filename = fname    - > 183 内置 .execfile(文件名,* where)

     

/Users/malte/Documents/setup.py in()         4设置(         5 name =“test”,   ----> 6 ext_modules = cythonize('testcimport.pyx'),         7)

     

/Applications/Canopy.app/appdata/canopy-1.1.0.1371.macosx-x86_64/Canopy.app/Contents/lib/python2.7/distutils/core.pyc in setup(** attrs)       167提高       168其他:    - > 169提升SystemExit,“错误:”+ str(msg)       170       171 return dist

     

SystemExit:错误:命令'gcc'以退出状态1

失败

正如你可能从这个输出中得知的那样,我在MacOSX上使用了Canopy。

如果我使用“import numpy”而不是“cimport numpy”,一切正常,但是我不能声明变量。

谢谢!

马尔特

ps:我认为我仍然需要单独执行“import numpy”才能访问numpy中的普通python函数,但这并没有改变这个例子中的任何内容 - 我仍然得到相同的错误消息。

1 个答案:

答案 0 :(得分:5)

你必须同时使用两者:

cimport numpy
import numpy

第一个允许您访问Numpy C API,以便您可以声明数组缓冲区和变量类型。

第二个允许您访问Numpy Python函数。

不要担心在同一个变量空间中使用相同的名称('numpy'),因为Cython会处理这个...


编辑(来自评论):似乎Cython没有找到Numpy C API ...你能尝试添加:

-I.../Python27/Lib/site-packages/numpy/core/include

到编译器命令行...(检查路径是否适合您的系统)