ImportError in python 2.5 in C API DLL

Matimus mccredie at gmail.com
Thu Oct 16 19:12:46 EDT 2008


On Oct 16, 10:58 am, Henrik <henrik.martens... at googlemail.com> wrote:
> 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_call,
>                        LPVOID lpReserved
>                                )
> {
>     return TRUE;}
>
> #ifdef _MANAGED
> #pragma managed(pop)
> #endif
> static PyObject *
> spam_system(PyObject *self, PyObject *args)
> {
>     const char *command;
>     int sts;
>     if (!PyArg_ParseTuple(args, "s", &command))
>         return NULL;
>     sts = system(command);
>     return Py_BuildValue("i", sts);}
>
> static PyMethodDef PyBSMethods[] = {
>       {"spam", (PyCFunction) spam_system, METH_VARARGS|METH_KEYWORDS,
> "Hi"},
>       {NULL, NULL, 0, NULL}        /* Sentinel */};
>
> extern "C" {
>       __declspec(dllexport) void initspam(void)
>       {
>             PyObject* module = Py_InitModule("spam", PyBSMethods);
>             PyObject* d = PyModule_GetDict(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



More information about the Python-list mailing list