[Numpy-discussion] distutils for a Pyrex module

Robert Kern robert.kern at gmail.com
Tue Mar 20 18:57:18 EDT 2007


Pierre GM wrote:
> On Tuesday 20 March 2007 18:13:09 Robert Kern wrote:
>> Pierre GM wrote:
>> Hmm. Okay, put the FORTRAN files into a library instead.
> 
> Robert, Pearu, great ! Creating a library did the trick. I eventually come 
> with that:
> ########################
> def configuration(parent_package='',top_path=None):
>     from numpy.distutils.misc_util import Configuration, get_mathlibs
>     config = Configuration('cloess',parent_package,top_path)
>     from numpy.distutils.system_info import get_info, dict_append
>     #
>     f_sources = ('loessf.f', 'linpack_lite.f')
>     config.add_library('floess', 
>                        sources = [join('src',x) for x in f_sources])
>     #
>     blas_info = get_info('blas_opt')
>     lapack_info = get_info('lapack_opt')
>     #    
>     c_sources = ['cloess.c', 'loess.c', 'loessc.c', 'misc.c', 'predict.c',]
>     #
>     build_info = {}
>     dict_append(build_info, **blas_info)
>     dict_append(build_info, **lapack_info)    
>     dict_append(build_info, libraries=['floess'])
>     #  
>     config.add_extension('_loess',
>                          sources=[join('src', x) for x in c_sources],
>                          **build_info
>                         )
>     config.add_data_dir(join('.','examples'))
>     config.add_data_files('pyloess.py')
>     return config
> #########################
> However, I still don't get a usable module: I have:
> ImportError: dynamic module does not define init function (init_loess). It 
> looks like src/loess.c gets compiled before /src/cloess.c... 

Is there an init_loess function in cloess.c? If cloess.c was created by Pyrex
from cloess.pyx, then Pyrex will make an initcloess function. The module name
needs to be consistent throughout.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco



More information about the NumPy-Discussion mailing list