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, но это ничего не меняет в этом примере - я все еще получаю то же самое сообщение об ошибке.
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