On Apr 29, 2009, at 11:55 AM, Ondrej Certik wrote: > Hi, > > I am having a problem getting the pure mode run (I think this used to > work before). Here is my cx.pyx file: > > ------------- > import cython > > from numpy import array > > #[email protected](x=cython.int) > def f(x): > r = cython.declare(cython.int) > i = cython.declare(cython.int) > if x > 0: > r = 1 > for i in range(1, x): > r *= i > return r > else: > return 0 > > def f_vectorized(a): > return array([f(x) for x in a]) > ---------- > > and here is my cx.pxd file: > ----- > cdef int f(int x) > ------- > > If I compile it: > > $ cython cx.pyx > warning: /home/ondrej/repos/cython_test/cx.pyx:6:0: Overriding cdef > method with def method. > > > it doesn't build: > > gcc -fPIC -O3 -I/usr/include/python2.6 -c -o cx.o cx.c > cx.c:196: warning: â__pyx_f_2cx_fâ used but never defined > gcc -fPIC -O3 -shared -o cx.so cx.o > /usr/bin/ld: cx.o: relocation R_X86_64_PC32 against undefined symbol > `__pyx_f_2cx_f' can not be used when making a shared object; recompile > with -fPIC > /usr/bin/ld: final link failed: Bad value > collect2: ld returned 1 exit status > make: *** [cx.so] Error 1 > > > If I delete the pxd file, it works fine (but it's not a cdef function, > so it's slow).
Not sure--have you tried without the locals decorator in the Python source? I hope this isn't a regression. > > In the wiki: > > http://wiki.cython.org/pure > > I can read: > > Decorators > > We have settled on @cython.cclass for the cdef class decorators, and > @cython.cfunc and @cython.ccall for cdef and cpdef functions > (respectively). > http://codespeak.net/pipermail/cython-dev/2008-November/002925.html > > > But the cfunc doesn't seem to be defined in the cython module. > > So what is the way to create a pure python mode cdef functions? "we have settled on" != it has been implemented, so the .pxd file is the only way to do it for now. - Robert _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
