我有许多子模块Python项目,我用的distutils包起来。 我想建立一些Python扩展用C生活在其中的一些子模块,但我不明白如何让Python扩展到生活在一个子模块。 下面是什么我正在寻找最简单的例子:
这里是我的Python扩展c_extension.c
:
#include <Python.h>
static PyObject *
get_answer(PyObject *self, PyObject *args)
{
return Py_BuildValue("i", 42);
}
static PyMethodDef Methods[] = {
{"get_answer", get_answer, METH_VARARGS, "The meaning of life."},
{NULL, NULL, 0, NULL}
};
PyMODINIT_FUNC
initc_extension(void) {
(void) Py_InitModule("c_extension", Methods);
}
这里是一个setup.py
的作品:
from distutils.core import setup
from distutils.extension import Extension
setup(name='c_extension_demo',
ext_modules = [Extension('c_extension', sources = ['c_extension.c'])])
在virtualenv中我能做到这一点安装后:
>>> import c_extension
>>> c_extension.get_answer()
42
但我想有c_extension
活一个子模块中,说foo.bar
。 我需要什么。这条管线切换到能获得在Python壳的行为是这样的:
>>> import foo.bar.c_extension
>>> foo.bar.c_extension.get_answer()
42