PyRun_File / PyRun_String

Ulrich Huenemoerder uhuenemoerder at
Mon Nov 8 16:41:59 EST 1999

Hello again,

if somebody wants to know, this is how I solved it....

(I found out I have to use compiler option /MD using Visual C++ 6.0, too,
else the program crashed)


# /my/script/path/
def doPrint():
    print "called doPrint"

if __name__ == '__main__':
    print "this is __main__"

# end of

// /somewhere/else/main.cpp
void main(int argc, char **argv) {

    /* variables */
    PyObject *pdict;


    pdict = PyDict_New();
    PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());

    // extend the searchpath
    PyRun_String("import sys", file_input, pdict, pdict);
    PyRun_String("sys.path.insert(0, '/my/script/path')", file_input, pdict,

    // import the script -> no need for PyRun_File !!!
    PyRun_String("import myTest", file_input, pdict, pdict);

    // call the function defined in
    PyRun_String("myTest.doPrint1()", file_input, pdict, pdict);

// end of main.cpp

More information about the Python-list mailing list