F
Faisal Alquaddoomi
Hello,
I'm having a bit of trouble isolating my scripts from each other in my
embedded Python interpreter, so that their global namespaces don't get
all entangled. I've had some luck with PyRun_FileEx(), as you can
specify dictionaries to use for the globals and locals, but it seems
that you can't do the same for PyEval_CallObject() (which i use for
calling the callbacks previously registered by scripts run via
PyRun_FileEx()). Is there any way to substitute the current global/local
dictionaries, run the callback, then switch back to the default? It
would be just as good if I could switch between several sets of global
variable dictionaries, one for each script; unfortunately, the
documentation is less than informative on this point (there isn't even a
formal defintion for PyEval_CallObject()). Also, I'm aware that eval()
and exec() allow you to pass in global/local dictionaries, but I think
it'd be a bit wasteful to drop into Python, run exec(), then have that
call my callback, rather than just calling the callback directly from
the host program.
Thanks in advance
I'm having a bit of trouble isolating my scripts from each other in my
embedded Python interpreter, so that their global namespaces don't get
all entangled. I've had some luck with PyRun_FileEx(), as you can
specify dictionaries to use for the globals and locals, but it seems
that you can't do the same for PyEval_CallObject() (which i use for
calling the callbacks previously registered by scripts run via
PyRun_FileEx()). Is there any way to substitute the current global/local
dictionaries, run the callback, then switch back to the default? It
would be just as good if I could switch between several sets of global
variable dictionaries, one for each script; unfortunately, the
documentation is less than informative on this point (there isn't even a
formal defintion for PyEval_CallObject()). Also, I'm aware that eval()
and exec() allow you to pass in global/local dictionaries, but I think
it'd be a bit wasteful to drop into Python, run exec(), then have that
call my callback, rather than just calling the callback directly from
the host program.
Thanks in advance