这是一个非常基本的问题,但它让我难过。
我试图将一些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安装存在问题。我知道我在这里遗漏了一些明显的东西,但我无法弄清楚它是什么。
答案 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!