Py_initialize / Py_Finalize no funciona dos veces con numpy

En la segunda llamada del siguiente código, mi aplicación segfault, así que supongo que me falta algo:

Py_Initialize(); pName = PyString_FromString("comp_macbeth"); pModule = PyImport_Import(pName); Py_DECREF(pName); if(pModule == NULL) { PyErr_Print(); Py_Finalize(); return; } pFunc = PyObject_GetAttrString(pModule, "compute"); /* pFunc is a new reference */ if (!pFunc || !PyCallable_Check(pFunc) ) { PyErr_Print(); Py_Finalize(); return; } Py_Finalize(); 

El comp_macbeth.py está importando numpy. Si elimino la importación numpy, todo está bien. ¿Es un error numpy, o me falta algo sobre las importaciones?

De los documentos de Py_Finalize :

Es posible que algunas extensiones no funcionen correctamente si se llama a su rutina de inicialización más de una vez; esto puede suceder si una aplicación llama a Py_Initialize () y Py_Finalize () más de una vez.

Al parecer Numpy es uno de esos. Véase también este mensaje de Numpy-Discussion.

El camino a seguir es llamar a Py_Initialize() solo una vez y limpiar al salir. (¡Y también debería ser más rápido!)

Tengo esto en mi parte de inicialización del módulo, pero la URL ya no existe. En caso de que ayude:

 // http://numpy.scipy.org/numpydoc/numpy-13.html mentions this must be done in module init, otherwise we will crash import_array();