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