On Jun 30, 7:02 pm, "Gabriel Genellina" <gagsl-...@yahoo.com.ar> wrote: > En Tue, 30 Jun 2009 13:05:42 -0300, Jérôme Fuselier > <jerome.fusel...@gmail.com> escribió: > > > > > I've tried to import a script in an embedded python intrepreter but > > this script fails when it imports the uuid module. I have a > > segmentation fault in Py_Finalize(). > > > #include "Python.h" > > > void test() { > > Py_Initialize(); > > PyImport_Import(PyString_FromString("uuid")); > > Py_Finalize(); > > } > > > main(int argc, char **argv) > > { > > for (i=0 ; i < 10; i++) > > test(); > > } > > > For my application, I have to call Py_initialize and Py_Finalize > > several times so factorizing them in the main function is not an easy > > solution for me. > > Are you sure you can't do that? Not even using Py_IsInitialized? Try to > avoid repeatedly calling Py_Initialize - won't work. > > Python 2.x does not have a way to "un-initialize" an extension module > (that's a big flaw in Python design). Modules that contain global state > are likely to crash the interpreter when used by the second time. (Python > 3 attempts to fix that) > > -- > Gabriel Genellina
Hi Gabriel, Thanks for your response. I can modify my code to call Py_IsInitialized which I didn't know before and this works well. The problem is that I did not own the process which calls Py_Initialize and Py_Finalize. I'm able to call Py_Initialize correctly but I can't call Py_Finalize so this is not perfect. At least I have a temporary solution which is not too bad. Thanks, Jerome -- http://mail.python.org/mailman/listinfo/python-list