在C语言中编写简单的Python扩展

3 投票
1 回答
502 浏览
提问于 2025-04-16 00:02

我正在尝试创建一个简单的 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() 的函数,结果也遇到了同样的错误。你可以试着稍微改一下这个函数的名字,看看这样是否能解决问题。

撰写回答