Juha Salo wrote:
> I'm totally out of ideas with this one. I have a Cython class defined in
> .pyx and .pxd files like this:
> 
> #foo.pxd
> 
> cdef class Foo:
>     cdef float n[3]
> 
> #foo.pyx
> 
> cdef class Foo:
>     def __init__(self, float a=0.0, float b=0.0, float c=0.0):
>          self.n[0] = a
>          self.n[1] = b
>          self.n[2] = c
> 
> 
> 
> The problem is that when I try to import and initialize a Foo object, I get
> the following error:
> 
> >>> from foo import Foo
> >>> f = Foo()
> 
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "foo.pyx", line 3, in foo.Foo.__init__ (foo.c:701)
>     self.n[0] = a
> AttributeError: 'foo.Foo' object has no attribute 'n'
> 
> 
> 
> I've tried all kinds of crazy stuff trying to fix this and I found a strange
> thing: When I copy foo.pxd and foo.pyx to another folder and build them from
> that path, they work and I get no errors at all. What could cause something
> like this?

You must keep both in a "foo" package directory that has an __init__.py
file (to mark it as package). That's the way Python packages work.

Stefan

_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to