无法使用Python / C API调用自定义模块

时间:2014-07-04 06:27:57

标签: python c++ python-c-api

文件结构:

Foo/
     list.so
     main.cpp
     list.cpp
     boost_wrapper.cpp

main.cpp 代码:

#include <Python.h>
#include "list.cpp"


int main(int argc, char *argv[]){


    PyObject *pimport;
    pimport=PyString_FromString("list");
    Py_SetProgramName(argv[0]);
    Py_Initialize();
    PyImport_Import(pimport);
    /*PyRun_SimpleString("l=list.LinkedList()");
    PyRun_SimpleString("l.insert(\"N\", 9)");
    PyRun_SimpleString("l.display()");*/
    Py_Finalize();      
}

ERROR:

ImportError: No module named list

但是如果我从bash运行python,我就能成功导入模块并使用定义的所有函数。我也尝试使用PyRun_SimpleString导入但没有用。

我怀疑当前的工作目录对Py_Initialize()调用的Python解释器是不可见的。

1 个答案:

答案 0 :(得分:0)

Py_Initialize();之后添加这些行以附加您的PYTHONPATH

PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\".\")");