首页 > TAG信息列表 > python-c-api

在Python C API中使用多个模块/类型?

我有两个不同的Python扩展模块;我们将它们称为A和B.模块A包含一个称为容器的存储类类型,我想在模块B中使用它作为类方法的返回类型. 我似乎找不到任何有关如何执行此操作的文档.我大致按照本文来创建模块/类,只是我没有将所有方法都声明为静态方法,因此可以访问它们:http://nedbatche

python-使用C-API在Numpy数组中反转轴

我正在使用Python C-API将一些C代码包装为Python包. 最后,我必须反转一个numpy数组中的轴,即 x = x [:, ::-1] 是否可以使用Numpy C-API进行此操作?我知道有一些用于转置和交换轴的例程,但是我对索引的了解并不多.有任何想法吗?谢谢,安迪解决方法:由于Python中的索引只是调用对象的__

从CAPI评估Python代码并获取输出

我正在尝试从嵌入式Python C API仿真code.InteractiveInterpreter.我正在使用PyEval_Evalcode评估用户输入.我正在尝试评估解释器中的用户输入,并以字符串形式返回输出(就像解释器一样).但是,PyEval_Evalcode返回包装在PyObject *中的多种数据类型.有什么办法可以做我想做的事吗? 约

Python调用C:C如何发送被调用的Python行号?

我有一个Python代码,调用了一些C代码(.so文件). 有没有办法从C代码中获取从Python端调用的行号?解决方法:我最终找到了PyFrame_GetLineNumber(PyFrameObject * f)C函数,其源代码位于frameobject.c中.

在python 3中导入时抱怨参数为str /字节

我已经将updating a quaternions package与numpy集成,因此它可以在python 2和python 3中使用.不幸的是,基本导入步骤对于3.x来说惨不忍睹,尽管它在python 2.7中从未失败. (我使用python2.7编译2.7版本,并使用python3.x编译3.x版本.这是一个非常简单的distutils.)错误消息甚至都没有

Python C API:使用C扩展中的属性装饰器

我正在用C编写一个python模块,该模块提供了一个类,包装了C API. C API具有一些基本的访问器方法,我希望将它们作为属性显示在python类中.例如,说我有: int libspam_get_eggs(spam_t *spam, int *eggs); int libspam_set_eggs(spam_t *spam, int eggs); 我知道如何创建类CSpam并向

使用PyCxx创建可继承的Python类型

最近,我和一个朋友一直在研究各种Python C包装器,试图找到一个可以满足某些专业项目和业余项目需求的包装器.我们俩都在PyCxx上进行了磨合,以在轻量级和易于接口之间隐藏了Python C api的某些最丑陋位之间取得了良好的平衡.但是,在暴露类型时,PyCxx并不十分健壮(即:它指示您创建类型

Python C-API模块退出处理程序-是否等同于atexit?

我正在使用Python ver 2.6.4 当我的扩展模块退出/卸载时,我必须从C库中调用一个函数.对于C扩展模块,相当于atexit?解决方法:Py_AtExit()功能可用于注册多达32个清除功能.

在Python C API中返回多元对象的元组

我正在编写一个本机函数,它将返回多个Python对象 PyObject *V = PyList_New(0); PyObject *E = PyList_New(0); PyObject *F = PyList_New(0); return Py_BuildValue("ooo", V, E, F); 这样编译就可以了,但是,当我从Python程序中调用它时,出现了一个错误: SystemError: bad for

如何重定向python解释器输出并将其捕获在C程序的字符串中?

我正在使用python C API从C程序运行python命令.我想将所有python输出都捕获到一个字符串中,由以下重定向进行管理,以捕获python stdout和stderr输出: #python script , redirect_python_stdout_stderr.py class CatchOutput: def __init__(self): self.value = ''

使用Python C-API具有元组参数的__getitem__方法

是否可以使用python C-API使用__getitem__定义一个带有元组参数的类? PyTypeObject的tp_as_sequence成员的sq_item成员必须是ssizeargfunc,所以我看不到该怎么做.(但我认为NumPy ndarray可以做到这一点.)解决方法:是的,请改用tp_as_mapping. 它的mp_subscript带有一个PyObject *,因

如何将python c-extension方法声明为类方法?

我正在为C类编写一个python包装器,该包装器为备用“构造函数”提供了几种静态方法.我想知道如何通过python c-api导出这些? 这是相关的C代码的存根. PyObject *PyFoo_FromFoo(Foo foo); // This should be a class method that create a new instance of PyFoo(). PyObject *

Python函数胶囊

我在python 2.7.5的帮助下找到了此代码段,这是有关在使用C和C扩展Python部分中向其他模块公开C-API的章节:为扩展模块提供C API /* C API functions */ #define PySpam_System_NUM 0 #define PySpam_System_RETURN int #define PySpam_System_PROTO (const char *command) // ... s

在Python 3.5中使用PyEval_EvalCode

我正在尝试将扩展模块从2.7移植到3.5.扩展模块使用PyEval_EvalCode.它使用类似于以下代码的代码来做到这一点: struct _node *compiled_node = PyParser_SimpleParseString (in_string, Py_file_input); if (compiled_node) { PyCodeObject *compiled_code = PyNode_Compile (c

python-PyAPI_DATA()宏的解释?

我搜索了整个Web和can’t seem to find文档,甚至搜索了PyAPI_DATA()的作用的简单说明(即使它是used in the Python header files和cited on python.org).有人可以在乎这是什么意思吗,还是可以指向我忽略的文档? 谢谢.解决方法:它用于标记公共API变量(因为Python的核心通常是动态库),

c-如何整理/修复PyCXX创建的新型Python扩展类?

我几乎完成了对C Python包装器(PyCXX)的重写. 原始版本允许旧样式扩展类和新样式扩展类,但也允许从新样式扩展类派生一个类: import test // ok a = test.new_style_class(); // also ok class Derived( test.new_style_class() ): def __init__( self ): test_funcm

python-PyDict_SetItemString segfaults

我正在尝试为Python3写一个简单的C扩展,当我尝试向字典中添加字符串时它会出现段错误.这是我的代码: #include <stdio.h> #include <Python.h> int main() { PyObject* dict_p = PyDict_New(); char *val = "idjewijjd"; PyObject* val_p = PyUnicode_FromString(va

如何提高Python C Extensions文件行的读取?

最初在Are there alternative and portable algorithm implementation for reading lines from a file on Windows (Visual Studio Compiler) and Linux?上被问到,但由于在国外也关闭,因此,我在这里尝试通过更简洁的用例来缩小其范围. 我的目标是使用带有行缓存策略的Python C Exte

c-函数调用上的PyObject segfault

我正在尝试使用Python打开对话框以接受输入到我的C应用程序中. 这是我要执行的操作的最小限度表示: #include <iostream> #include <Python.h> int main() { /* Begin Python Ititialization - only needs to be done once. */ PyObject *ip_module_name = NULL; PyOb

在c中导入嵌入式python中的tensorflow时出错

我的问题是在C程序中嵌入Python 3.5解释器以从C接收图像,并将其用作我训练的张量流模型的输入.当我在我的python代码中导入tensorflow库时,我得到一个错误(其他库工作正常).简化代码如下: #include <string> #include <windows.h> #include <stdio.h> int main() { Py_Initia

使用Python / C API传递C指针

我是Python / C API的新手…我正在尝试为我的C程序添加新功能,其中我可以将python嵌入其中并同时扩展功能,以便嵌入式解释器可以执行将与之交互的脚本作为我的C程序的一部分编写的扩展python模块.我的C程序没有全局变量.我想保持这种方式;同时为了向Cthon公开C功能,看来扩展C函数至

Python C扩展:文档的方法签名?

我正在编写C扩展,我想让我的方法的签名可见为内省. static PyObject* foo(PyObject *self, PyObject *args) { /* blabla [...] */ } PyDoc_STRVAR( foo_doc, "Great example function\n" "Arguments: (timeout, flags=None)\n" "Doc blahblah d

使用ctypes将python对象作为参数传递给C/C++函数

我有一个带有PyObject作为参数的函数的DLL 就像是 void MyFunction(PyObject* obj) { PyObject *func, *res, *test; //function getAddress of python object func = PyObject_GetAttrString(obj, "getAddress"); res = PyObject_CallFunction(func, NULL);

Python 3中的PyEval_InitThreads:如何/何时调用它? (传奇继续令人作呕)

基本上,当应该调用PyEval_InitThreads()时,似乎存在大量的混淆/模糊,并且需要伴随API调用的内容.不幸的是,official Python documentation很暧昧.关于这个话题已经有many questions on stackoverflow了,事实上,我个人已经已经asked a question almost identical了,所以如果将其作为

python – 如何在调用PyRun_String(…)后返回NULL时获取异常信息?

我试图运行以下代码: Py_Initialize(); PyObject *py_main = PyImport_AddModule("__main__"); PyObject *py_dict = PyModule_GetDict(py_main); PyObject *ret = PyRun_String(SOME_PYTHON_CODE, Py_file_input, py_dict, py_dict); 但是在我生成的python代码(SOME_PYTHON_CODE)