Des questions similaires ont été posées plusieurs fois, mais malheureusement, j'ai encore rencontré un problème avec l'utilisation de Cython avec Numpy. Prenez cet exemple minimal (qui suit à peu près les exemples here):Cython avec `cimport numpy` échoue
# file test.pyx
import numpy as np
#cimport numpy as np
def func():
print("hello")
que j'essaie de construire avec:
from distutils.core import setup
from Cython.Build import cythonize
import numpy as np
import os
os.environ["CC"] = "g++-7"
setup(
ext_modules = cythonize("test.pyx", include_path = [np.get_include()])
)
Cet exemple fonctionne (python setup.py build_ext --inplace
), jusqu'à ce que je Décommentez la ligne cimport ...
, après quoi je reçois bien connaître l'erreur:
fatal error: numpy/arrayobject.h: No such file or directory
le chemin retourné par np.get_include()
a le arrayobject.h
tête, mais dans la commande g++
réelle qui est exécuté, l'include dir manque comme -I/...
:
g++-7 -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/include/python3.6m -c test.c -o build/temp.macosx-10.11-x86_64-3.6/test.o
Toute idée de ce qui pourrait causer ce problème? J'utilise Python 3.6.1 sur Mac OS, tout (Cython, Numpy, ..) installé avec pip3
et Cython 0.25.2.
Pouvez-vous essayer: 'ext_modules = cythonize ((extension ("test", sources = [ "test.pyx"], include_dirs = [np.get_include()], ), ))' –
également , quelle est la version de Cython? 'cython3 --version' –
Pierre, c'est magique! Cela fonctionne, même si je ne sais pas pourquoi/comment (encore) – Bart