[Numpy-discussion] Determine if numpy is installed from an extension

Robert Kern robert.kern@gmail....
Wed Feb 3 09:22:29 CST 2010


On Wed, Feb 3, 2010 at 03:41, David Cournapeau <cournape@gmail.com> wrote:
> On Wed, Feb 3, 2010 at 5:38 PM, Peter Notebaert <peno@telenet.be> wrote:
>> >From an extension? How to import numpy from there and then test if that
>> succeeded and that without any annoying message if possible...
>
> One obvious solution would be to simply call PyImport_Import, something like:
>
> #include <Python.h>
>
> PyMODINIT_FUNC initfoo(void)
> {
>        PyObject *m, *mod;
>
>        m = Py_InitModule("foo", NULL);
>        if (m == NULL) {
>                return;
>        }
>
>        mod = PyImport_ImportModule("numpy");
>        if (mod == NULL) {
>                return;
>        }
>        Py_DECREF(mod);

Or rather, to recover from the failed import as the OP wants to do:

mod = PyImport_ImportModule("numpy");
if (mod == NULL) {
    /* Clear the error state since we are handling the error. */
    PyErr_Clear();
    /* ... set up for the sans-numpy case. */
}
else {
    Py_DECREF(mod);
    import_array();
    /* ... set up for the with-numpy case. */
}

-- 
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