美文网首页
Python如何编译出C语言的扩展

Python如何编译出C语言的扩展

作者: 赵枝阳 | 来源:发表于2019-07-28 11:23 被阅读0次

1. 编写两个文件, .c的源码文件, 内容可参考如下:

#include <stdio.h>

#include "Python.h"

int fac(int n) {

    if (n < 2) return 1;

    else return n * fac(n - 1);

}

static PyObject* fac_fac(PyObject* self, PyObject* args) {

    int num;

    if (!PyArg_ParseTuple(args, "i", &num)) {

        return NULL;

    }

    return (PyObject*)Py_BuildValue("i", fac(num));

}

static PyMethodDef facMethods[] = {

    {"fac", fac_fac, METH_VARARGS},

    {NULL, NULL},

};

void initfac() {

    Py_InitModule("fac", facMethods);

}

int main() {

    return 0;

}

2. 后面就是利用python的distutils模块编译出C的SO库,文件名称为setup.py, 内容如下:

from distutils.core import setup, Extension

setup(name = "fac", ext_modules = [Extension("fac", sources = ["fac.c"])])

3. python setup.py build 会编译出产物到 build/ 下面, 后面在运行 sudo python setup.py install, 就会把so库安装到 /usr/local/lib/python2.7/dist-packages 下面, 此时这里就有一个 fac.so 文件, 如果你的模块名称是 fac 的话。

相关文章

网友评论

      本文标题:Python如何编译出C语言的扩展

      本文链接:https://www.haomeiwen.com/subject/qipurctx.html