Was ich diesmal machen möchte, ist
ctypedef numpy.float64_t DOUBLE_t
Ich möchte definieren.
Um dies zu tun
Sie müssen cimport numpy
machen.
Ich möchte diese beiden "ctypedef" und "cimport" machen.
Die Umgebung sieht so aus. OS X, Yosemite Cython 0.23.4 Python 3.4.3
Lesen Sie die Seite Cython 0.23.2-Dokumentation: Erstellen von Cython-Code und erstellen Sie die folgenden zwei Skripts.
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')
)
Wenn ich damit "python setup.py build_ext --inplace" ausführe, wird der folgende Fehler angezeigt.
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
Ich habe eine Fehlermeldung erhalten, dass die Datei fehlt. Es scheint, dass der Pfad anders ist. Wenn Sie sich die Site also etwas früher ansehen, So etwas wie Cython 0.23.2 Dokumentation: Kompilierung
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()]
Es schien üblich zu sein.
Lassen Sie uns dies vorerst in setup.py
einfügen.
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()]
)
Wenn ich versuche, dies zu verwenden, wird erneut eine Fehlermeldung angezeigt
error.
Unknown distribution option: 'include_path'
Mir wurde gesagt, dass es keine solche Option gibt.
Wenn man sich den Stapelüberlauf usw. ansieht, scheint es, dass nicht jeder "include_path" verwendet, sondern "include_dirs".
Versuchen Sie vorerst 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()]
)
Als ich es versuchte, bestand es (o ・ ω ・ o) Ich weiß nicht, was es ist, aber es sieht so aus, als wäre es getan worden.
include_dirs = [numpy.get_include ()]
Es scheint gut zu sein.
Es gibt nur wenige Dinge, die auf Japanisch geschrieben sind und neu sind. Wenn Sie also kein Englisch verstehen, gibt es Dinge, die schwierig sind.
Ich kompiliere es diesmal, aber es gibt viele Warnungen für "nicht verwendete Funktion", also muss ich es vielleicht beheben? (Da es sich um eine nicht verwendete Funktion handelt, kann sie in Ruhe gelassen werden.)
Recommended Posts