Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';在Python中导入C扩展文件_Python_C_Python C Api - Fatal编程技术网

Can';在Python中导入C扩展文件

Can';在Python中导入C扩展文件,python,c,python-c-api,Python,C,Python C Api,我的扩展C函数,在pyc.C #include<Python.h> static PyObject *add(PyObject* self,PyObject* args) { int a=9; int b=10; int c=a+b; return Py_BuildValue(c); //return Py_BuildValue( "s","hiiiii"); } static char prin_docs[] = "prin( ): A

我的扩展C函数,在
pyc.C

#include<Python.h>
static PyObject *add(PyObject* self,PyObject* args) {

    int a=9;
    int b=10;
    int c=a+b;
    return Py_BuildValue(c);

    //return Py_BuildValue( "s","hiiiii");
}

static char prin_docs[] = "prin( ): Any message you want to put here!!\n";

static PyMethodDef consume_methods[] = {
   {"add", (PyCFunction)add,
       METH_NOARGS, prin_docs},
       {NULL}
};

PyMODINIT_FUNC initadd(void) {
   Py_InitModule3(add, consume_methods,
                  "Extension module example!");
}
使用该C文件的Python程序:

from distutils.core import setup, Extension
setup(name='add', version='1.0',  
      ext_modules=[Extension('add', ['pyc.c'])])
import add

print(add.add());
上面的代码成功地创建了一个.so对象,但我无法通过执行它来导入Python程序。我得到以下错误:

Traceback (most recent call last):
  File "pycall.py", line 1, in <module>
    import add
ImportError: No module named add
回溯(最近一次呼叫最后一次):
文件“pycall.py”,第1行,在
导入添加
ImportError:没有名为add的模块

您是否确实安装了模块?如果您只构建它,它将不会位于
sys.path

欢迎使用SO!你已经读过关于这个话题的文章了吗?在我看来,您好像错过了对
cythonize()
@NiayeshIsky的调用。我相信您编辑掉的“cpython”标记是正确的-用户正在使用Python的“cpython”实现。这看起来与Cython没有任何关系,所以我删除了你添加的标签。@DavidW很公平,尽管删除
cpython
一开始实际上是错误的。