在C语言中编写简单的Python扩展
我正在尝试创建一个简单的 Python 扩展模块。我把下面的代码编译成了一个名为 transit.so 的动态模块。
#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);
}
但是,当我试图从 Python 中调用这个模块时,
import transit
transit.print()
我收到了一个错误信息。
File "test.py", line 2
transit.print()
^
SyntaxError: invalid syntax
我的代码哪里出问题了呢?
1 个回答
4
我猜这个问题可能是因为用了一个关键字作为函数名。我刚才在一个模块里试着定义了一个叫 print()
的函数,结果也遇到了同样的错误。你可以试着稍微改一下这个函数的名字,看看这样是否能解决问题。