python-c-extension相关内容
我对 C 有点陌生,我似乎无法做我想做的事.我需要为 C 函数做一些 Python 绑定,我想我可以解决这个问题.但是有一条小线是行不通的. #include 我明白了: 致命错误 #1035:找不到包含文件 . 我什么都试过了.我只是将 Python.h 放在与我的项目相同的文件夹中.然后我把文件名放在链接器下的库和目标文件中.然后我对 python31.lib
..
我写了一个包含两部分的 python 库: Python C 扩展 Python C 扩展的 Python 包装器 我希望能够以这样的方式打包它,即 Python 包装器是顶级模块 foo 而 Python C 扩展是位于 foo._foo.但是,到目前为止,我只能创建两个顶级模块,foo 和 _foo. 我需要在 setup.py 和 init_foo C 函数中做什么来完成
..
我注意到一些成熟的Python库已经针对大多数体系结构(Win32/Win-amd64/MacOS)和Python版本进行了预编译.在不同环境下交叉编译扩展的标准方法是什么?葡萄酒?虚拟机?众包? 解决方案 我们使用虚拟机和 Hudson 服务器. 对于每种支持的架构,我们都有一个虚拟机(通常编译不会扩展分配给它们的资源,因此VM很好).我猜每个虚拟机的配置都可以由Puppet或Ch
..
我在C语言中有一个vector结构,其中包含以下字段, struct vector { unsigned char* data; unsigned long size; unsigned long elemsize; unsigned long capacity; }; ,并且有一些功能可以相应地作用于vector实例,例如: struct vect
..
我知道Windows上的Python扩展通常必须使用与编译Python本身相同的Visual Studio版本构建,并且我进一步意识到Python 2.7至3.1是使用Visual Studio 2008构建的.我所在的计算机已经安装了VS 2013,并且,正如我发现的无数次一样,快速弄乱Windows开发环境的一种方法是以从旧到最新的任何顺序安装Visual Studio.除此之外,在全新的Wi
..
我正在编写就地添加操作的实现.但是,由于某种原因,有时我会得到一个只读缓冲区(在添加自定义扩展类和整数...的同时). 相关代码为: static PyObject * ModPoly_InPlaceAdd(PyObject *self, PyObject *other) { if (!ModPoly_Check(self)) { //Since it's i
..
据我了解C和C ++之间的关系,后者本质上是前者的扩展,并保留了一定程度的向后兼容性.可以安全地假设可以使用C ++代码调用python C API吗? 更重要的是,我注意到官方python文档在同一页面上将C和C ++扩展捆绑在一起.我在任何地方都找不到C ++ API.这使我相信,两种语言都可以安全使用相同的API. 有人可以确认还是拒绝? 编辑: 我想我使我的问题复杂
..
我需要使用distutils(和/或setuptools)进行C扩展,可以同时在运行时和编译时动态使用distutils(和/或setuptools)(出于不同的目的).在Linux上这不是问题,但在OS X上则是问题.默认情况下,distutils在OS X上创建一个“捆绑包"(并将其命名为.so),该捆绑包可以在运行时使用,但不能在编译时使用.我需要制作一个.dylib,可以在编译时链接到该文
..
我正在用C语言编写一个Python类,我想在我的调试代码中放入断言. assert.h非常适合我.这只会放入调试编译器,因此断言失败不会影响Python代码的用户*. 我正在尝试分割我的“库"代码(应该与针对Python链接的代码分开),以便可以将其与其他C代码一起使用.因此,我的Python方法是纯C代码的稀薄包装. 所以我无法在“库"代码中执行此操作: if (black =
..
我正在尝试从扩展名中调用c函数,并将问题缩小到此测试用例. #import "Python.h" ... // Called from python with test_method(0, 0, 'TEST') static PyObject* test_method(PyObject *args) { int ok, x, y, size; const char *s;
..
我正在处理python c-extension,并想创建一个带有unix时间戳的python datetime对象的实例. 在文档站点上( http://docs.python.org/c-api/datetime.html ),我发现了函数PyDateTime_FromTimestamp(),该函数会根据输入参数返回新的引用. 说明如下: 创建并返回一个新的datetime.date
..
据我所知,PyList_SetItem和PyList_SETITEM之间的区别在于PyList_SetItem会降低其覆盖的列表项的引用计数,而PyList_SETITEM不会. 我有什么理由不总是一直使用PyList_SetItem吗?还是使用PyList_SetItem初始化列表中的索引位置会麻烦吗? 解决方案 PyList_SET_ITEM是一个不安全的宏,它基本上将对象粘贴到
..
我已经开始用C语言编写Python模块,这让我非常着迷.我只是从一个简单的示例计算两点范数开始.代码看起来像这样, _norm.c #include #include "norm.h" static char module_docstring[] = "This module provides an interface for computing the
..
我正在尝试从docs https://docs.python编译该示例. org/2.7/extending/embedding.html ,而我的代码与5.1下的代码完全相同: #include int main(int argc, char *argv[]) { Py_SetProgramName(argv[0]); Py_Initialize();
..
我想在Python中跨多个核心运行cpu密集型程序,并试图弄清楚如何编写C扩展来做到这一点.是否有任何代码示例或教程? 解决方案 您已经可以将Python程序分为多个进程.操作系统已经在所有核心上分配了您的进程. 执行此操作. python part1.py | python part2.py | python part3.py | ... etc. 操作系统将确保该部分使
..
我已经阅读了Python C-API的文档,甚至编写了一些扩展模块.但是,从C函数返回Python对象时,我仍然不清楚确切的语义. Python文档中的有限示例通常显示一个C函数,该函数返回Py_BuildValue的结果.现在,Py_BuildValue返回一个New Reference,并将此引用的所有权转移到解释器.因此,我可以据此推断出,这是一条通用规则,即返回给Python的任何对
..
我该如何编写一个Cython函数,该函数接受一个字节字符串对象(普通字符串,字节数组或跟随根据 Unicode和传递字符串 Cython教程页面上,以下内容应该起作用: cpdef object printbuf(unsigned char[:] buf): chars = [chr(x) for x in buf] print repr(''.join(chars))
..
这是python文档(http://docs.python.org/extending/extending.html)中的一个简单示例: static PyObject * spam_system(PyObject *self, PyObject *args) { const char *command; int sts; if (!PyArg_ParseTuple
..
在创建Python的C扩展时,是否有可能以某种方式编写以文档字符串给扩展名的用户? 解决方案 类型的文档字符串可以作为文档中的示例. 功能的文档字符串可以包含在ml_doc 字段="nofollow noreferrer">模块的方法表.如果您希望文档字符串在物理上与实际函数“接近",则可以在函数定义上方包括在方法表中引用的字符串常量. 可以将方法的文档字符串分配给 模块的文档字符
..
当我从与执行python调用不同的C线程中调用C-API的Py_Finalize()时,收到错误输出. 我看到的错误是: Exception ignored in: Traceback (most recent call last): File "C:\Py
..