概述
注意点和要点:
1、python2.x和python3.x的函数形式不一样,一定要注意。
比如:Py_InitModule函数是在python2.x中使用的,而python3.x没有这个函数。
2、python setup.py build //生成模块
3、python setup.py install //生成模块并安装模块
举例说明:
1、其中 hello.c文件
#include <Python.h>
static PyObject* helloworld(PyObject* self) {
return Py_BuildValue("s", "Hello, helloworld Python");
}
static char helloworld_docs[] =
"helloworld( ): Any message you want to put here!!n";
static PyMethodDef helloworld_methods[] = {
{"helloworld", (PyCFunction)helloworld,
METH_NOARGS, helloworld_docs},
{NULL}
};
static struct PyModuleDef helloworld_def =
{
PyModuleDef_HEAD_INIT,
"helloworld", /* name of module */
"", /* module documentation, may be NULL */
-1, /* size of per-interpreter state of the module, or -1 if the module keeps state in global variables. */
helloworld_methods
};
PyMODINIT_FUNC PyInit_helloworld(void)
{
return PyModule_Create(&helloworld_def);
}
2、setup.py 文件
from distutils.core import setup, Extension
setup(name='helloworld', version='1.0',
ext_modules=[Extension('helloworld', ['hello.c'])])
安装完成后检测是否正确的方法:
test.py文件
import helloworld
#print("helloworldrn")
print(helloworld.helloworld())
说明:
hello.c setup.py test.py 在Ubuntu 18.04.3 LTS和win10下的pycharm都可以实现。已经成功在两个环境下调用model helloword
最后
以上就是含糊蜜蜂为你收集整理的python c扩展模块的方法的全部内容,希望文章能够帮你解决python c扩展模块的方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复