ImportError in python 2.5 in C API DLL

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Henrik

    ImportError in python 2.5 in C API DLL

    Hi,

    We are upgrading from Python 2.3 to verion 2.5 and when we recompile
    we get ImportError.

    To test we took the spam example from the web documentation and
    compiled it with Py23 and it imports without a problem. Changing the
    libs in visual studio 2008 to point to Py25 and we get:
    >>import spam
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    ImportError: No module named spam
    >>>
    Would really appreciate any assistance.

    H

    ----------------------------------------------------------------------------------------------------------------------
    #include "stdafx.h"
    #ifdef _MANAGED
    #pragma managed(push, off)
    #endif
    BOOL APIENTRY DllMain( HMODULE hModule,
    DWORD ul_reason_for_c all,
    LPVOID lpReserved
    )
    {
    return TRUE;
    }
    #ifdef _MANAGED
    #pragma managed(pop)
    #endif
    static PyObject *
    spam_system(PyO bject *self, PyObject *args)
    {
    const char *command;
    int sts;
    if (!PyArg_ParseTu ple(args, "s", &command))
    return NULL;
    sts = system(command) ;
    return Py_BuildValue(" i", sts);
    }
    static PyMethodDef PyBSMethods[] = {
    {"spam", (PyCFunction) spam_system, METH_VARARGS|ME TH_KEYWORDS,
    "Hi"},
    {NULL, NULL, 0, NULL} /* Sentinel */
    };
    extern "C" {
    __declspec(dlle xport) void initspam(void)
    {
    PyObject* module = Py_InitModule(" spam", PyBSMethods);
    PyObject* d = PyModule_GetDic t(module);
    }
    }
    ----------------------------------------------------------------------------------------------------------------------
  • Matimus

    #2
    Re: ImportError in python 2.5 in C API DLL

    On Oct 16, 10:58 am, Henrik <henrik.martens ...@googlemail. comwrote:
    Hi,
    >
    We are upgrading from Python 2.3 to verion 2.5 and when we recompile
    we get ImportError.
    >
    To test we took the spam example from the web documentation and
    compiled it with Py23 and it imports without a problem. Changing the
    libs in visual studio 2008 to point to Py25 and we get:
    >
    >import spam
    >
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ImportError: No module named spam
    >
    >
    >
    Would really appreciate any assistance.
    >
    H
    >
    ----------------------------------------------------------------------------------------------------------------------
    #include "stdafx.h"
    #ifdef _MANAGED
    #pragma managed(push, off)
    #endif
    BOOL APIENTRY DllMain( HMODULE hModule,
                           DWORD  ul_reason_for_c all,
                           LPVOID lpReserved
                                   )
    {
        return TRUE;}
    >
    #ifdef _MANAGED
    #pragma managed(pop)
    #endif
    static PyObject *
    spam_system(PyO bject *self, PyObject *args)
    {
        const char *command;
        int sts;
        if (!PyArg_ParseTu ple(args, "s", &command))
            return NULL;
        sts = system(command) ;
        return Py_BuildValue(" i", sts);}
    >
    static PyMethodDef PyBSMethods[] = {
          {"spam", (PyCFunction) spam_system, METH_VARARGS|ME TH_KEYWORDS,
    "Hi"},
          {NULL, NULL, 0, NULL}        /* Sentinel */};
    >
    extern "C" {
          __declspec(dlle xport) void initspam(void)
          {
                PyObject* module = Py_InitModule(" spam", PyBSMethods);
                PyObject* d = PyModule_GetDic t(module);
          }}
    >
    ----------------------------------------------------------------------------------------------------------------------
    What about the simple stuff like: did you put your dll/pyd file where
    python 2.5 can find it? Are you including the correct Python.h, are
    you linking against the correct library (python25.lib or
    python25_d.lib) ? Have you tried debugging with the "python -v" option
    (shows import trace messages)?

    Matt

    Comment

    • =?ISO-8859-1?Q?=22Martin_v=2E_L=F6wis=22?=

      #3
      Re: ImportError in python 2.5 in C API DLL

      Would really appreciate any assistance.

      You should change your project to create a .pyd file instead of a .dll
      file.

      Regards,
      Martin

      Comment

      • Henrik

        #4
        Re: ImportError in python 2.5 in C API DLL

        On Oct 17, 1:05 am, "Martin v. Löwis" <mar...@v.loewi s.dewrote:
        Would really appreciate any assistance.
        >
        You should change your project to create a .pyd file instead of a .dll
        file.
        >
        Regards,
        Martin
        Ha-ha!

        Just rename the DLL to .pyd

        H

        Comment

        Working...