[Numpy-discussion] Re: Trouble installing numarray on Solaris

Thomas Heller theller at python.net
Mon Jul 4 10:01:17 CDT 2005


Todd Miller <jmiller at stsci.edu> writes:

> On Mon, 2005-07-04 at 13:40 +0200, Thomas Heller wrote:
>> Todd Miller <jmiller at stsci.edu> writes:
>> 
>> > On Fri, 2005-07-01 at 15:02 -0700, Russell E. Owen wrote:
>> >> A user of my application reports that installing numarray 1.3.2 on 
>> >> Solaris using Python 2.3.1 has run into trouble:
>> >> 
>> >>   prompt> python
>> >>   Python 2.3.1 (#1, Sep 30 2003, 20:29:58) [C] on sunos5
>> >>   Type "help", "copyright", "credits" or "license" for more information.
>> >>   >>> import numarray
>> >>   Fatal Python error: Call to API function without first calling
>> >>   import_libnumarray() in Src/_convmodule.c
>> >>   Abort (core dumped)
>> >
>> > It looks vaguely like an binary API mismatch of some kind... or one of
>> > you numarray modules is stale or broken.  To restate the obvious,   it's
>> > likely that numarray won't import (in C!) because import_libnumarray()
>> > is very defintely in _convmodule.c.  Since it's there and the API
>> > pointer was not initialized,  the libnumarray import failed.
>> 
>> To the numarray authors/maintainers: Isn't it a bit harsh to call
>> Py_FatalError() in the init function?
>
> That's an interesting observation...  the old recourse was to dump core
> by calling through a NULL function pointer.  :-)
>
> Since this error can occur in the context of any API function, possibly
> called from any sub-function within an extension function,  I'm not sure
> there is a soft & general way to handle it:  getting it implies the
> function must fail but that can't always be reported.  I'm open to
> suggestions... it's just not obvious to me how to handle it better.

Maybe I was confusing numarray and numeric.  In numeric's
_numpymodule.c, function init_numpy(), there is this

    [...]
    if (PyErr_Occurred()) goto err;
    return;
err:
	Py_FatalError("can't initialize module _numpy");
}

Sorry for the confusion.

> I've concluded that the message is overly specific and may shorten it to
> just the facts:  "call through NULL numarray C-API pointer in <module>."

Wouldn't it be possible to raise an exception - that would make it
easier to find the bug?

Thomas





More information about the Numpy-discussion mailing list