cimport 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]: %run setup.py build_ext --на месте



Компиляция testcimport.pyx потому что это
измененный. Цитонизирующий тесткимпорт.дарохранительница работает build_ext дом
'testcimport' расширение ССЗ -ФНО-строгий антиалиасинга -ФНО-общие -динамические
-Арч x86_64 с -isysroot /разработчик/пакеты SDK/MacOSX10.6.СДК-DNDEBUG -г -О3 -арка архитектуру x86_64 -isysroot /разработчик/пакеты SDK/MacOSX10.6.sdk-I / приложения / навес.приложение/папка AppData/сени-1.1.0.1371.macosx-x86_64 / навес.приложение/содержание/числе/вместо python2.7
-с testcimport.c-o сборка / темп.macosx-10.6-x86_64-2.7 / testcimport.o произошло исключение, используйте %tb для просмотра полной обратной трассировки.



SystemExit: error: команда ' gcc ' завершилась ошибкой со статусом выхода 1



В [2]: %tb



--------------------------------------------------------------------------- SystemExit Traceback (последний вызов
последний)
/ Приложения / Навес.приложение/папка AppData/сени-1.1.0.1371.macosx-x86_64 / навес.приложение/содержание/Либ/вместо python2.7/сайт-пакеты/оболочкой IPython/утилиты/py3compat.пыць
в execfile(fname, * где)
181 еще:
182 именем = имени
-- >183 builtin .execfile (filename, * where)



/Users/malte/Documents/setup.py в ()
4 Настройка(
5 наименование = "тест",
---- >6 ext_modules = cythonize ('testcimport.Пикс'),
7)



/ Приложения / Навес.приложение/папка AppData/сени-1.1.0.1371.macosx-x86_64 / навес.приложение/содержание/Либ/вместо python2.7/distutils/ядра.pyc in setup (**attrs)
167 повышение
168 еще:
--> 169 raise SystemExit, "error:" + str (msg)
Сто семьдесят
171 return dist



SystemExit: error: команда ' gcc ' завершилась ошибкой со статусом выхода 1




Как вы, возможно, поняли из этого вывода, я использую Canopy на MacOSX.



Все работает хорошо, если я использую "import numpy" вместо "cimport numpy", но тогда я не могу объявлять переменные.



Спасибо!



Malte



Ps: Я понимаю, что мне все еще нужно сделать "импорт numpy" отдельно, чтобы получить доступ к обычным функциям python в numpy, но это ничего не меняет в этом примере - я все еще получаю то же самое сообщение об ошибке.

505   1  

1 ответ:

Вы должны использовать оба:

cimport numpy
import numpy

Первый дает вам доступ к API Numpy C, так что вы можете объявить буферы массива и типы переменных.

Второй дает вам доступ к функциям numpy Python.

Не беспокойтесь об использовании одних и тех же имен ('numpy') в одном и том же пространстве переменных, потому что Cython обрабатывает это...


EDIT (из комментариев): похоже, что Cython не находит API Numpy C... не могли бы вы попытаться добавить:

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

Компилятору командная строка... (проверьте, является ли путь правильным для вашей системы)

Comments

    Ничего не найдено.