将Scipy嵌入C语言中

时间:2014-07-26 02:13:19

标签: python c scipy

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

我试图将一些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之后将统计信息导入为步骤2,但没有任何工作。

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

1 个答案:

答案 0 :(得分:3)

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

try_scipy.c

#include <Python.h>
#include <stdio.h>

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!