3 Stimmen

Eine einfache Python-Erweiterung in C

Ich versuche, ein einfaches Python-Erweiterungsmodul zu erstellen. Ich habe den folgenden Code in ein dynamisches Modul transit.so kompiliert

#include <python2.6/Python.h>

static PyObject*
_print(PyObject* self, PyObject* args)
{
    return Py_BuildValue("i", 10);
}

static PyMethodDef TransitMethods[] = {
    {"print", _print, METH_VARARGS, ""},
    {NULL, NULL, 0, NULL}
};

PyMODINIT_FUNC
inittransit(void)
{
    Py_InitModule("transit", TransitMethods);
}

Wenn man jedoch versucht, dies von Python aus aufzurufen

import transit
transit.print()

Ich erhalte eine Fehlermeldung

  File "test.py", line 2
    transit.print()
                ^
SyntaxError: invalid syntax

Was ist falsch an meinem Code?

4voto

Justin Peel Punkte 46114

Ich vermute, dass es mit der Verwendung eines Schlüsselworts als Funktionsname zu tun hat. Ich habe versucht, eine Funktion zu definieren print() in einem Modul gerade jetzt zu testen und bekam die gleiche Art von Fehler. Versuchen Sie, den Namen dieser Funktion leicht zu ändern und sehen Sie, ob das Problem dadurch behoben wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X