Embedded and extending python 2.5: trouble with __main__ inPyRun_SimpleFileExFlags?

Discussion in 'Python' started by Carl Douglas, Feb 19, 2007.

  1. Carl Douglas

    Carl Douglas Guest

    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.
    Carl Douglas, Feb 19, 2007
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Richard Townsend

    Extending Embedded Python

    Richard Townsend, Sep 24, 2005, in forum: Python
    Replies:
    1
    Views:
    275
    Fredrik Lundh
    Sep 25, 2005
  2. Torsten Bronger
    Replies:
    3
    Views:
    1,974
    Thomas Heller
    Mar 9, 2006
  3. Vertilka
    Replies:
    1
    Views:
    642
    Fredrik Lundh
    Jan 4, 2007
  4. Carl Douglas
    Replies:
    0
    Views:
    389
    Carl Douglas
    Mar 5, 2007
  5. vishnu
    Replies:
    0
    Views:
    367
    vishnu
    Mar 31, 2007
Loading...

Share This Page