Ce que je veux faire cette fois, c'est
ctypedef numpy.float64_t DOUBLE_t
Je veux définir.
Pour faire ça
Vous devez faire cimport numpy
.
Je veux faire ces deux "ctypedef" et "cimport".
L'environnement ressemble à ceci. OS X, Yosemite Cython 0.23.4 Python 3.4.3
Reportez-vous à la page Documentation Cython 0.23.2: Construction de code Cython et créez les deux scripts suivants.
test.pyx
import numpy
cimport numpy
ctypedef numpy.float64_t DOUBLE_t
setup.py
from distutils.core import setup
from Cython.Build import cythonize
setup(
name = 'test',
ext_modules = cythonize('test.pyx')
)
Lorsque j'utilise ceci pour exécuter python setup.py build_ext --inplace
, j'obtiens l'erreur suivante.
error.
sample.c:250:10: fatal error: 'numpy/arrayobject.h' file not found
#include "numpy/arrayobject.h"
^
1 error generated.
error: command 'clang' failed with exit status 1
J'ai eu une erreur indiquant que le fichier est manquant. Il semble que le chemin soit différent, donc si vous regardez le site un peu plus tôt, Quelque chose comme ça documentation Cython 0.23.2: Compilation
Often, Python packages that offer a C-level API provide a way to find the necessary include files, e.g. for NumPy:
include_path = [numpy.get_include()]
Cela semblait être courant.
Pour le moment, mettons cela dans setup.py
.
setup.py
from distutils.core import setup
from Cython.Build import cythonize
import numpy
setup(
name = 'test',
ext_modules = cythonize('test.pyx')
include_path = [numpy.get_include()]
)
Lorsque j'essaye d'utiliser ceci, j'obtiens à nouveau une erreur
error.
Unknown distribution option: 'include_path'
On m'a dit qu'il n'y avait pas une telle option.
En regardant stackoverflow et ainsi de suite, il semble que tout le monde n'utilise pas ʻinclude_path, mais utilise ʻinclude_dirs
.
Pour le moment, essayez s / include_path / include_dirs
.
setup.py
from distutils.core import setup
from Cython.Build import cythonize
import numpy
setup(
name = 'test',
ext_modules = cythonize('test.pyx')
include_dirs = [numpy.get_include()]
)
Quand je l'ai essayé, ça a réussi (o ・ ω ・ o) Je ne sais pas ce que c'est, mais il semble que cela a été fait.
ʻInclude_dirs = [numpy.get_include ()] `Cela semble être bon à utiliser. Il y en a peu de nouveaux écrits en japonais, donc si vous ne comprenez pas l'anglais, cela peut être douloureux. Je le compile cette fois, mais il y a beaucoup d'avertissements de «fonction inutilisée», alors peut-être que je dois le réparer? (Comme il s'agit d'une fonction inutilisée, elle peut être laissée seule)
Recommended Posts