zusammengestellt importieren Ich teste aus Cython auf Windows 10 (Spyder 3.2.3) und Python 3.6.3 nach dem Tutorial, und ich schrieb diese Funktion:Kann nicht cython Funktion nach erfolgreicher Kompilierung
from libc.stdlib cimport malloc, free
cdef int** t3(int* El, int lEl):
cdef int lElsq = lEl*lEl
cdef int i,j
cdef int** rr = <int**> malloc(2*sizeof(int*))
for i in range(2):
rr[i] = <int*> malloc(lElsq*sizeof(int))
for i in range(lEl):
for j in range(lEl):
rr[0][i*lEl+j] = El[i]
rr[1][i*lEl+j] = El[j]
return rr
Ich legte es in eine pyx
Datei und folgte dem Tutorial kompiliert es mit dem MS Visual Studio 14 Compiler.
Befehl: %run setup.py build_ext --inplace
Setup-Datei:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules=cythonize("tempCython.pyx"),
)
Die Zusammenstellung keine Fehler und eine Menge von Dateien werfen haben erstellt wurden:
Im selben Verzeichnis wie die Originaldatei:
- eine
tempCython.c
Datei mit dem gleichen Namen - eine
tempCython.cp36-win_amd64.pyd
Datei
Im Unterverzeichnis build\temp.win-amd64-3.6\Release
:
- eine
tempCython.obj
Datei - eine
tempCython.cp36-win_amd64.exp
Datei - eine
tempCython.cp36-win_amd64.lib
Datei
Die 01.231.sagt mir, ich brauche die pyd
Datei, also habe ich die cp36-win_amd64
im Dateinamen entfernt.
Ich kann es ohne Fehler importieren, aber meine Funktion t3
zeigt sich einfach nie, es ist einfach nicht da.
Ohne irgendeine Fehlermeldung bin ich jetzt ratlos. Ich habe Fehler wie diese zuvor manchmal in 3rd-Party-Paketen festgestellt, aber ich habe nie verstanden, was sie verursacht hat. Warum ist meine Funktion nicht da?
Ich möchte auch den Punkt all dieser zusätzlichen Dateien wissen, welche brauche ich eigentlich?
http://docs.cython.org/en/latest/src/userguide/language_basics.html#python-functions-vs-c-functions – oz1
Danke. Du kannst das eine Antwort geben und ich werde dir Punkte geben. – Khris
Aber das ist ein Link nur Antwort ... –