Hi Python fans, I am developing a DLL that is loaded by a host application on windows. I'm using python 2.5.
My DLL uses an embedded python interpreter which can access the host application through an API which I have exposed using SWIG 1.3.31. Therefore I have both extended and embedded Python at once: the SWIG generated code is statically linked into my DLL, and one of the functions in my DLL executes PyRun_SimpleFile. Using python25_d.dll, I stepped through some python code to understand what is happening, and it appears that PyRun_SimpleFile is returning -1 because python cannot create the module __main__. Here's the code from pythonrun.c: int PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags) { PyObject *m, *d, *v; const char *ext; m = PyImport_AddModule("__main__"); if (m == NULL) return -1; . . . } BTW, PyImport_AddModule fails because deeper down a dictionary check fails: if (!PyDict_Check(op)) return NULL; Can someone suggest what I need to do to get this to work? Here are the relevant lines from my code: if (GetOpenFileName(&ofn)==TRUE) { Py_Initialize(); init_mymodule(); // SWIG generated method PyObject* PyFileObject = PyFile_FromString(ofn.lpstrFile, "r"); if (PyRun_SimpleFile(PyFile_AsFile(PyFileObject), ofn.lpstrFile)==-1) { MessageBox(NULL, "error running script", "Python", MB_ICONERROR); } Py_DECREF(PyFileObject); Py_Finalize(); } Thanks. -- http://mail.python.org/mailman/listinfo/python-list