jjzjj

PyObject

全部标签

c++ - 在 c 中嵌入 python 时 Numpy 导入失败

我正在尝试将Python程序嵌入到C++代码中。我遇到的问题是使用包含numpy导入的python脚本。例如,如果我使用以下C++代码#includeintmain(intargc,char*argv[]){doublex=2.,xp=4.,dt=6.,y=8,yp=1,dz=6;Py_Initialize();PyObject*myModuleString=PyString_FromString((char*)"log");PyObject*myModule=PyImport_Import(myModuleString);PyObject*myFunction=PyObject_Ge

Python* 到 boost::python::object

我正在尝试用C++构建一个Python模块,将二维vector转换为Numpy二维数组。这里有什么不正确的地方-大概需要对PyObject*的boostpython对象进行一些转换?boost::python::objectbuild_day(intyear,intday){PyObject*arr;constintHEIGHT=5;constintWIDTH=5;std::vector>array(WIDTH,std::vector(HEIGHT));npy_intpdims[2]={WIDTH,HEIGHT};arr=PyArray_SimpleNewFromData(2,dims

为什么pyimport_importmodule返回一个pyobject*,重新数为3而不是1

我正在与PythonCAPI合作,在我的C++程序中,我注意到了一件奇怪的事情。在我的PC上的调试器中运行这样的简单程序时:intmain(intargc,constchar*argv[]){Py_Initialize();PyObject*scipy_stats_module=PyImport_ImportModule("scipy.stats");//importing"scipy.stats"modulePy_DecRef(scipy_stats_module);if(Py_FinalizeEx()我已经看到ob_refcnt属性scipy_stats_module,在创建之后和致电之前

传递 Python 对象时,Objective-C 中的 Python-C Api 包装器因调用 __getattr__ 而崩溃

我正在用Objective-C编写一个轻量级接口(interface),它能够执行python脚本并在Objective-C和Python之间来回传递数据。我研究了PyObjC和ObjP,但都不是我要找的东西(而且因为我正在为iOS基本上我在Objective-C中创建了一个名为“ObjC_Class”的Python类型(创意,不是吗?)我希望这个Python对象几乎类似于ObjC对象。所以我决定覆盖该类的__getattr__函数,这样我就可以访问该类的ObjC等价物的任意方法和属性。代码如下:staticPyObject*ObjC_Class_getattro(ObjC_Class

Python C 扩展 - 为什么将使用关键字参数的方法强制转换为 PyCFunction

我正在学习Python-C扩展,并且对为什么必须将使用关键字参数的方法强制转换为PyCFunctions感到困惑。我对PyCFunction的理解是它接受两个指向PyObjects的指针并返回一个指向PyObject的指针——例如PyObject*myFunc(PyObject*self,PyObject*args)如果我要使用一个使用关键字参数的函数,那么这个函数将采用三个指向PyObjects的指针并返回一个指向PyObject的指针——例如PyObject*myFunc(PyObject*self,PyObject*args,PyObject*keywordArgs)但是,当我创

Python abc 模块 : Extending both an abstract base class and an exception-derived class leads to surprising behavior

扩展抽象基类和派生自“对象”的类的工作方式与您预期的一样:如果您尚未实现所有抽象方法和属性,则会出现错误。奇怪的是,用扩展“异常”的类替换对象派生类允许您创建不实现所有必需的抽象方法和属性的类的实例。例如:importabc#ThesuperclassesclassmyABC(object):__metaclass__=abc.ABCMeta@abc.abstractpropertydeffoo(self):passclassmyCustomException(Exception):passclassmyObjectDerivedClass(object):pass#Mixthemin

python - 在对象上调用方法

给定一个指向python对象的PyObject*,我如何调用其中一个对象方法?文档从未给出这样的例子:PyObject*obj=....PyObject*args=Py_BuildValue("(s)","Anarg");PyObject*method=PyWHATGOESHERE(obj,"foo");PyObject*ret=PyWHATGOESHERE(obj,method,args);if(!ret){//checkerror...}这相当于>>>ret=obj.foo("Anarg") 最佳答案 PyObject*obj=

Python C 扩展 - 为什么可调用 C 函数必须接受参数并返回 PyObject *

我刚开始玩PythonC扩展,很好奇为什么可从Python调用的C函数必须采用2个PyObject*参数并返回一个PyObject*。我编写了以下“HelloWorld”扩展:#includestaticPyObject*hello_world(PyObject*self,PyObject*noargs){printf("HelloWorld\n");returnPy_BuildValue("");}//Modulefunctionstable.staticPyMethodDefmodule_functions[]={{"hello_world",hello_world,METH_NO

python - Pybind11 或 Boost.Python 或两者都不是-

我很好奇让C++和Python相互对话的最灵活、最高效、最无缝的方法是什么。竞争者似乎是Pybind11、Boost.Python,两者都不是(简单地编写如下函数和包装器)。usingnamespaceboost::algorithm;staticPyObject*strtest(PyObject*self,PyObject*args){std::strings="BoostC++Libraries";to_upper(s);PyObject*python_val=Py_BuildValue("s",s.c_str());returnpython_val;}PyMODINIT_FUNC

c++ - 嵌入式 Python 2.7.2 从用户定义的目录导入模块

我正在将Python嵌入到C/C++应用程序中,该应用程序将具有已定义的API。应用程序需要实例化脚本中定义的类,其结构大致如下:classuserscript1:def__init__(self):##dosomethinghere...defmethod1(self):##methodthatcanbecalledbytheC/C++app...etc我过去曾设法(为了概念验证)使用以下类型的代码完成这项工作:PyObject*pName=PyString_FromString("userscript.py");PyObject*pModule=PyImport_Import(pN