[python-win32] Embedding python in a win32 dll and a wx thread
Mark Hammond
mhammond at skippinet.com.au
Thu Jun 12 11:08:39 CEST 2008
> Everything works fine for the first time (python initialize/shell start/
shell
> terminate/ python finalize) But after a while I realized that I need to
> reinitialize python and start all over again.
> The problem is that I have no control over loading and unloading my dll
> Which means that the dll stays attached to the application process after
> detaching from a chart and somehow it becomes the source of evil the
> second time I try to attach it to a chart and I get this traceback[1] in
> the pystartshell function when I try to create the wx app.
Sadly, Python dies in a number of creative ways with multiple init/finalize
cycles. I'd suggest simply not even trying to unload Python - just keep a
flag for yourself. This means it might be almost impossible to ever call
Py_Finalize (calling from your DllMain as you are unloaded is unlikely to be
reliable either) - Windows will cope - but exit hooks and finalizers for
objects which are still alive will not run. If it is any consolation,
Python is also never finalized when a win32com object causes Python to be
loaded into a process either...
Cheers,
Mark
More information about the python-win32
mailing list