Exception TypeError:'参数列表必须是一个元组'

问题描述 投票:1回答:1

我正在尝试从cpp调用一个简单的python函数。

下面是cpp代码:

#include <iostream>
#include <Python.h>
#include <numpy/arrayobject.h>
using namespace std;

void init_numpy()
{
    import_array();
}

int main()
{
char dir[500];
cout << "Enter directory: \n";
cin >> dir;

Py_Initialize();

const char *scriptDirectoryName = dir; 
PyObject *sysPath = PySys_GetObject("path");
PyObject *path = PyString_FromString(scriptDirectoryName);
int result = PyList_Insert(sysPath, 0, path);
PyObject *pModule = PyImport_ImportModule("mytest");

init_numpy();
double getItem[2] ;

getItem[0] = getItem[1] = 2;

npy_intp dims = 2 ;

PyObject* arrayToPass =  PyArray_SimpleNewFromData(1, &dims, NPY_DOUBLE , (void *)getItem);

PyObject* myFunction = PyObject_GetAttrString(pModule,(char*)"stuff");

//PyObject* args = PyTuple_Pack(1,PyFloat_FromDouble(getItem));
PyObject* myResult = PyObject_CallObject(myFunction, arrayToPass);
//double resultasd = PyFloat_AsDouble(myResult);
//cout << resultasd << endl;

    Py_Finalize();
    return 0;
}

这是我的python代码:mytest.py

def stuff(a):
   x = a[1]
   return x

这只是我正在编写的一个更大补丁的测试,但是方法是相同的。

我收到此错误:

Exception TypeError: 'argument list must be a tuple' in <module 'threading' from '/usr/lib/python2.7/threading.pyc'> ignored

我搜索了多个线程,但每个人都有独特的错别字或错误。

任何建议我做错了什么?

我编译为:

g++ -I /usr/include/python2.7/   che.cpp -lpython2.7 -o linkArr
python c++ linker typeerror embedding
1个回答
0
投票

来自文档:

© www.soinside.com 2019 - 2024. All rights reserved.