Evaluate a python expression from C?

David Brady daves_spam_dodging_account at yahoo.com
Wed Nov 28 00:31:34 CET 2001

> -----Original Message-----
> From: Kragen Sitaker [mailto:kragen at pobox.com]
> Subject: Re: Evaluate a python expression from C?
> There were several problems; that was one of them. 
> Here's an apparently-working program, in C:

Interesting.  It does not work on Win32.  However,
with your code as a starting help, I was able to "get
there from here."

For some reason, I don't know why, PyArg_ParseTuple()
does NOT work as expected; I tried adding and removing
parentheses around the arguments, and changing the "s"
to "(s)", all to no avail.  I know, I know... it would
help if I knew what I was doing.... :-)

Anyway.  I *did* get PyString_AsString() to work, but
it crashed whenever the expression did not evaluate to
a string.  I pored over the dox, and finally came up
with this strategy:

//  pObj = PyRun_String(data, Py_eval_input, globals,
//  PyArg_ParseTuple(pObj, "s", &buf); 
    pObj = PyObject_Repr(PyRun_String(data,
Py_eval_input, globals, locals));
    buf = PyString_AsString(pObj);

This appears to work for every input I've thrown at
the program so far (numeric and strings).

Thank you for your help.


David Brady
daves_spam_dodging_account at yahoo.com
I'm feeling very surreal today... or *AM* I?

Do You Yahoo!?
Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.

More information about the Python-list mailing list