[Cython] 0.9.8.1.1 and .pxd files
Lisandro Dalcin
dalcinl at gmail.com
Fri Oct 31 03:29:16 CET 2008
Sorry, forgot to attach...
On Thu, Oct 30, 2008 at 11:28 PM, Lisandro Dalcin <dalcinl at gmail.com> wrote:
> If all you can accept some vile hackery, see the attached tarball ;-) .
>
> Python recognizes a PKGNAME directory as a pakage if '__init__.py' is
> there, if not, no way. BUT if '__init__.so' is also there, it loads
> '__init__.so' !!! But then the exported module init function in the
> dynlib needs to be named initPKGNAME, and "PKGNAME" needs to be passed
> to Py_InitModule()
>
> So, Greg, here you have the rules if you want to implement it ;-).
>
> PS: tried only in Py 2.5, this is surely undocumented, and probably it
> is in fact some bugy code in CPython's 'import.c' .
>
>
>
> On Thu, Oct 30, 2008 at 9:21 PM, Jason Evans <jasone at canonware.com> wrote:
>> Greg Ewing wrote:
>>> The idea of allowing __init__.pyx was so that the main
>>> code of a package could be written in Pyrex.
>>>
>>> However, I've never actually tested whether Python
>>> recognises an __init__.so file as a package main
>>> file, so I'm not sure if this works.
>>
>> This is an issue for me, since I would like to be able to structure my
>> packages/modules something like the following (incomplete) tree:
>>
>> Parsing.so
>> Crux/
>> __init__.so (Cythonized Crux)
>> Config.py
>> DistMatrix.so
>> Tree/
>> __init__.so (Cythonized Crux.Tree)
>> Parsimony.so
>>
>> If it were possible to get Python to load __init__.so, everything would
>> be great, but Python reports:
>>
>> ImportError: No module named Crux
>>
>> I tried using the dotted file naming convention instead of the directory
>> hierarchy:
>>
>> Parsing.pyx
>> Crux.pyx
>> Crux.Config.py
>> Crux.DistMatrix.pyx
>> Crux.Tree.pyx
>>
>> Unfortunately, distutils turns that into:
>>
>> Parsing.so
>> Crux.so
>> Crux/
>> Config.py
>> DistMatrix.so
>> Tree.so
>>
>> This doesn't work because the Crux directory is not a package directory.
>> If I add a Crux/__init__.py, then Crux.so is ignored.
>>
>> In fact, I haven't been able to find *any* way to get Crux to be a
>> Cythonized package. As a data point, Sage apparently uses a combination
>> of empty __init__.py files and all.py files, but never creates
>> Cythonized packages. Also, http://wiki.cython.org/PackageHierarchy
>> narrowly avoids what I'm trying to do. My searches for other examples
>> hasn't turned up anything more useful than this email thread.
>>
>> Is there a way to nest Cythonized modules? To be clear, I would like to
>> be able to create all of the following as Cythonized loadable
>> packages/modules:
>>
>> Crux
>> Crux.Tree
>> Crux.Tree.Parsimony
>>
>> Thanks,
>> Jason
>> _______________________________________________
>> Cython-dev mailing list
>> Cython-dev at codespeak.net
>> http://codespeak.net/mailman/listinfo/cython-dev
>>
>
>
>
> --
> Lisandro Dalcín
> ---------------
> Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
> Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
> Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
> PTLC - Güemes 3450, (3000) Santa Fe, Argentina
> Tel/Fax: +54-(0)342-451.1594
>
--
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mypkg.tar.gz
Type: application/x-gzip
Size: 406 bytes
Desc: not available
Url : http://codespeak.net/pipermail/cython-dev/attachments/20081030/e02ee8fa/attachment.bin
More information about the Cython-dev
mailing list