gpt4 book ai didi

python - cimport numpy 不能在 cython 中工作;错误信息不清楚(对我来说)

转载 作者:太空狗 更新时间:2023-10-30 01:08:40 34 4
gpt4 key购买 nike

我是 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'),
)

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

In[1]: %run setup.py build_ext --inplace

Compiling testcimport.pyx because it changed. Cythonizing testcimport.pyx running build_ext building 'testcimport' extension 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/Contents/include/python2.7 -c testcimport.c -o build/temp.macosx-10.6-x86_64-2.7/testcimport.o An exception has occurred, use %tb to see the full traceback.

SystemExit: error: command 'gcc' failed with exit status 1

In [2]: %tb

--------------------------------------------------------------------------- SystemExit Traceback (most recent call last) /Applications/Canopy.app/appdata/canopy-1.1.0.1371.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/IPython/utils/py3compat.pyc in execfile(fname, *where) 181 else: 182 filename = fname --> 183 builtin.execfile(filename, *where)

/Users/malte/Documents/setup.py in () 4 setup( 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 raise 168 else: --> 169 raise SystemExit, "error: " + str(msg) 170 171 return dist

SystemExit: error: command 'gcc' failed with exit status 1

您可能已经从这个输出中了解到,我在 MacOSX 上使用 Canopy。

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

谢谢!

马尔特

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

最佳答案

你必须同时使用两者:

cimport numpy
import numpy

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

第二个让您可以访问 Numpy Python 函数。

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


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

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

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

关于python - cimport numpy 不能在 cython 中工作;错误信息不清楚(对我来说),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20022787/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com