Problem with uuid package when embedding a python interpreter

Jérôme Fuselier jerome.fuselier at gmail.com
Wed Jul 1 06:14:20 EDT 2009


On Jun 30, 7:02 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
wrote:
> En Tue, 30 Jun 2009 13:05:42 -0300, Jérôme Fuselier
> <jerome.fusel... at 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



More information about the Python-list mailing list