如何将 boost python list 转换为 PyObject

How to convert boost python list to PyObject

本文关键字:转换 PyObject list python boost      更新时间:2023-10-16

>我需要在程序中构建一个 numpy 数组C++

bp::list py_points;
// some code ....

在代码的某些部分,我需要将py_points转换为 PyObject * 类型以评估 python 模块

PyObject * point_array, * numpy, * ndarray;
numpy = PyImport_ImportModuleNoBlock("numpy");
ndarray = PyObject_GetAttrString(numpy, "array");
point_array = PyEval_CallObject(ndarray,bp::extract<PyObject *>(py_points)); //error!

错误出在这一部分

bp::extract<PyObject *>(py_points)

将 boost Python 对象转换为 PyObject 的正确方法是什么?

谢谢很多!

您无法从 boost::p ython::object 中提取 PyObject。对象类有一个成员 ptr(),它返回底层 PyObject。