thanks for your reply. I had the necessary imports in place but was still
seeing the error.
The following code from Michael Eddington resolved the issue (I think the
current problem is because of the dictionary being used)

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());
      }

                      Runtime.Incref(globals.Handle);
                      Runtime.Incref(locals.Handle);
      IntPtr result = Runtime.PyRun_String(code, (IntPtr)257,
globals.Handle, locals.Handle);

      if (result == IntPtr.Zero)
      {
          return null;
      }

      return new PyObject(result);
  }

rgd

Sesh

On 3/5/07, Brian Lloyd <[EMAIL PROTECTED]> wrote:

FYI, if you are getting a NameError using RunString that usually means
that the string
you run needs to do some imports — remember that RunString creates
(essentially) a
totally new global local namespace, so you'll need to import any names you
need in
your code snippet.

e.g.

  CLR.Food.SpamAndEggs.cook()

  ...will fail

but

  import CLR
  import CLR.Food
  CLR.Food.SpamAndEggs.cook()

  ...should work


hope this helps,

-Brian


On 3/4/07 4:37 AM, "Seshagiri Cherukuri" <[EMAIL PROTECTED]>
wrote:

 hi All,

I have embedded pythonnet into my C# application and this works great as
far as creating .net objects from python, executing methods etc.
Here I am using the RunSimpleString (the PyRun_SimpleString) wrapper to
send commands from the C# application to the pythonnet.

However I am facing the following problems:

1. After RunSimpleString, PyErr_Occurred or PyErr_Fetch are not able to
detect any exceptions even if they did occur
- for example, consider the code - curErr = PythonEngine.RunSimpleString(
"10/0\n" );
- this code does return a -1 value indicating error.
- however after this none of PyErr_Occurred or PyErr_Fetch do not detect
this error
- from python documentation it looks like there is no way to obtain the
exception information

2. using RunString
- because of above problem I want to send a multi-line code including a
try-except: block
- I have tried using RunString with all the three modes - Py_eval_input,
Py_single_input and Py_file_input
- The RunString works only if the code does not have any .net objects or
does not include any .net exceptions
- If the code sent to RunString includes a .net object e.g. obj, then
RunString always returns in NameError, obj is not defined

3. Strangely, if I run the console application, it is able to work with
.net exceptions - both .net and user defined exceptions

4. Is this because of the new dictionary created while in RunString?

thanks

Sesh Cherukuri

------------------------------
_________________________________________________
Python.NET mailing list - PythonDotNet@python.org
http://mail.python.org/mailman/listinfo/pythondotnet





--
Seshagiri Rao Cherukuri
_________________________________________________
Python.NET mailing list - PythonDotNet@python.org
http://mail.python.org/mailman/listinfo/pythondotnet

Reply via email to