将Scipy嵌入到C中

这是一个非常基本的问题,但它让我难过。

我试图将一些scipy例程嵌入到c程序中。 但是,我无法成功完成导入任何scipy模块的初始步骤。

我可以导入顶级的scipy,而不会获得null返回值,所以我很确定安装不是问题…

PyObject *pckg_name, *pckg; pckg_name = PyString_FromString("scipy"); pckg = PyImport_Import(pckg_name); if (!pckg) { printf("Error importing python module %s.\n"); return; } 

……但我无法达到任何较低的水平。 我已尝试使用PyImport_Import和PyImport_ImportModule进行各种组合,例如将“scipy.stats”导入为步骤1,或者在导入scipy后导入stats作为步骤2,但没有任何工作。

我可以导入和使用“随机”模块中的函数,所以我认为我的基础Python安装没有问题。 我知道我在这里遗漏了一些明显的东西,但我无法弄清楚它是什么。

对于它的价值,这对我有用:

try_scipy.c

 #include  #include  int main(int argc, char *argv[]) { PyObject *pckg_name; PyObject *pckg; Py_Initialize(); pckg_name = PyString_FromString("scipy.stats"); pckg = PyImport_Import(pckg_name); if (!pckg) { printf("fail\n"); } else { printf("got it!\n"); Py_DECREF(pckg); } Py_DECREF(pckg_name); Py_Finalize(); return EXIT_SUCCESS; } 

编译并运行:

 $ gcc try_scipy.c `python-config --cflags --ldflags` -o try_scipy $ ./try_scipy got it!