C API: Getting PyObject by name

pbienst peter.bienstman at gmail.com
Fri Oct 1 12:16:47 CEST 2010

Here is what I tried, but it prints out '-1':

PyObject* obj = PyRun_String("1", Py_single_input,
PyEval_GetGlobals(), PyEval_GetLocals());
long d = PyLong_AsLong(obj);
printf("long:%ld\n", d);


On Sep 30, 9:24 pm, Thomas Jollans <tho... at jollybox.de> wrote:
> On Thursday 30 September 2010, it occurred to pbienst to exclaim:
> > Hi,
> > I'm embedding Python in a C app.
> > Say I do the following:
> >   PyRun_SimpleString("a = 1")
> > Is there then a way to get access to the PyObject corresponding to a,
> > only making use in C of the fact that it's called "a"?
> > I've searched through the API docs, but I couldn't really find what I
> > was looking for.
> No. Not as such. But you could use PyRun_String, or PyRun_StringFlags. You
> could then access the globals object, but I ask you, why would you want to
> bind the object to a name in the first place? Use the fact that PyRun_String
> returns a reference to the result of an expression!

More information about the Python-list mailing list