Ho scritto un piccolo codice cython
che èImportazione Cython funzione: AttributeError: 'modulo' oggetto non ha attributo 'fun'
#t3.pyx
from libc.stdlib cimport atoi
cdef int fun(char *s):
return atoi(s)
il file setup.py
è
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("t3.pyx"))
corro setup.py
utilizzando questo comando
python setup.py build_ext --inplace
Questo mi dà
Compiling t3.pyx because it changed.
Cythonizing t3.pyx
running build_ext
building 't3' extension
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict- prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector- strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c t3.c -o build/temp.linux-x86_64-2.7/t3.o
t3.c:556:12: warning: ‘__pyx_f_2t3_fun’ defined but not used [-Wunused-function]
static int __pyx_f_2t3_fun(char *__pyx_v_s) {
^
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/t3.o -o /home/debesh/Documents/cython/t3/t3.so
Quando eseguo nel python
interprete mi
>>> import t3
>>> t3.fun('1234')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'fun'
>>>
Per i lettori futuri, che si desidera utilizzare '' non cpdef' cdef' se si desidera importare la funzione in uno script Python regolare – Jon