Embedding problem

Alex Martelli aleaxit at yahoo.com
Tue Nov 14 14:03:00 CET 2000


"Jp Calderone" <exarkun at mudprovider.com> wrote in message
news:3A10A113.5144672 at mudprovider.com...
[apparently using C++ code, for the convenience of
'just-in-time definition' of variables -- or maybe
a C99 compiler...?  Either way, I'll follow suit...]:
    [snip]
>    PyObject* result = PyRun_String(code, 0, globals, locals);
    [snip]
> to figure out what, or how.  I'm also not quite clear
> on the second arg. to  PyRun_String.. What's "start"?

One of the symbols:
    Py_eval_input
    Py_file_input
    Py_single_input
see chapter 2 in the Python/C API Reference Manual.

I think Py_file_input is what you want here; with
that, _and_ commenting out the import time and
time.sleep lines, your code works.


The import doesn't work because of the empty globals
dictionary.  I suspect you just want to use the
pre-defined dictionary of module __main__ as your
'globals', such as...:

     PyObject* mainmod = PyImport_AddModule("__main__");
     PyObject* globals = PyModule_GetDict(mainmod);

With these mods, your code might work (depending on
the setting of PYTHONHOME and PYTHONPATH environment
variables, or similar per-platform mechanisms, to
let Python locate its standard library to be able
to import the time module; if the import still fails,
you may want to work on these issues!).


Alex






More information about the Python-list mailing list