Been playing around with RunString implementations looking for what
works best. Here is my result. I am able to run any python script
loaded from file just fine. Also, between calls to RunString local
variables are saved just fine.
protected static PyDict locals = null;
public static PyObject RunString(string code)
{
PyObject module = ImportModule("__main__");
PyDict globals = new PyDict(Runtime.PyModule_GetDict(module.Handle));
if (locals == null)
{
locals = new PyDict(Runtime.PyDict_New());
}
IntPtr result = Runtime.PyRun_String(code, (IntPtr)257,
globals.Handle, locals.Handle);
if (result == IntPtr.Zero)
{
return null;
}
return new PyObject(result);
}