c++调用python中pandas不能被引用

c++调用python中pandas不能被引用

img

#include
int main() {

Py_Initialize();
PyRun_SimpleString("print('hello world')");
PyObject* pModule = NULL;
PyObject* pFunc = NULL;
PyObject* pArg = NULL;

pModule = PyImport_ImportModule("TB");
pFunc = PyObject_GetAttrString(pModule, "times1");

//int returnedString = 1;

PyObject* funcRes = PyObject_CallObject(pFunc, NULL);
PyObject* pResultStr = PyObject_Repr(funcRes);
string returnedString = PyUnicode_AsUTF8(pResultStr);
cout << "res1=" << returnedString << "\n";
Py_Finalize();

//test();
//return  returnedString;
return 0;

}

img

运行老是报错,没有import pandas as pd 就不会错怎么办

在 C++ 中调用 Python 程序时,需要确保 Python 解释器能够访问所需的模块和包,否则会报错。在你的代码中,报错信息显示没有找到 pandas,可能是因为 Python 解释器没有找到 pandas 模块。

你可以尝试通过在 C++ 中设置 Python 模块路径来解决这个问题。可以通过以下步骤设置模块路径:

1.在你的 Python 环境中运行以下代码获取 pandas 模块的路径:


import pandas as pd
print(pd.__file__)

2.在 C++ 中调用 Py_SetPath 函数设置模块路径,示例代码如下:

Py_Initialize();
PyRun_SimpleString("print('hello world')");

// 设置模块路径,将 PATH_TO_PANDAS_MODULE_PATH 替换为 pandas 模块的路径
char* path = getenv("PYTHONPATH");
setenv("PYTHONPATH", PATH_TO_PANDAS_MODULE_PATH, 1);

PyObject* pModule = PyImport_ImportModule("TB");
// ...

这样就可以让 Python 解释器找到 pandas 模块了。

以下答案引用自GPT-3大模型,请合理使用:

答案:为了实现c++调用python中的pandas,你需要在你的c++代码中添加以下内容:
// 导入python中的pandas模块
PyObject* pModule = PyImport_ImportModule("pandas");

if(pModule != NULL)
{ 
    // 从pandas模块中获取要使用的函数或变量,并将其转换为PyObject类型
    PyObject* pFunc = PyObject_GetAttrString(pModule, "read_csv");  

    // 生成参数列表
    PyObject* pArgs = PyTuple_New(1);
    PyObject *pValue = PY_STRING("/path/to/data.csv");  //这是要读取csv文件的路径
    PyTuple_SetItem(pArgs, 0, pValue); 

    // 调用函数
    PyObject *pDataFrame = PyObject_CallObject(pFunc,pArgs);

    // 处理函数的返回值(此处可以根据自己的需要将返回的pandas数据处理为c++可以使用的数据类型)


    //最后释放内存,防止内存泄漏
    Py_DECREF(pModule); 
    Py_DECREF(pFunc); 
    Py_DECREF(pArgs); 
    Py_DECREF(pDataFrame); 
}

如果我的回答解决了您的问题,请采纳我的回答

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^