python-c-extension相关内容

编译器找不到 Python.h

我对 C 有点陌生,我似乎无法做我想做的事.我需要为 C 函数做一些 Python 绑定,我想我可以解决这个问题.但是有一条小线是行不通的. #include 我明白了: 致命错误 #1035:找不到包含文件 . 我什么都试过了.我只是将 Python.h 放在与我的项目相同的文件夹中.然后我把文件名放在链接器下的库和目标文件中.然后我对 python31.lib ..
发布时间:2022-01-04 21:34:16 Python

如何打包 Python C 扩展,使其成为普通 Python 模块的子模块?

我写了一个包含两部分的 python 库: Python C 扩展 Python C 扩展的 Python 包装器 我希望能够以这样的方式打包它,即 Python 包装器是顶级模块 foo 而 Python C 扩展是位于 foo._foo.但是,到目前为止,我只能创建两个顶级模块,foo 和 _foo. 我需要在 setup.py 和 init_foo C 函数中做什么来完成 ..
发布时间:2021-06-26 20:29:28 Python

如何为不同的OS/版本的Python编译Python C/C ++扩展?

我注意到一些成熟的Python库已经针对大多数体系结构(Win32/Win-amd64/MacOS)和Python版本进行了预编译.在不同环境下交叉编译扩展的标准方法是什么?葡萄酒?虚拟机?众包? 解决方案 我们使用虚拟机和 Hudson 服务器. 对于每种支持的架构,我们都有一个虚拟机(通常编译不会扩展分配给它们的资源,因此VM很好).我猜每个虚拟机的配置都可以由Puppet或Ch ..
发布时间:2021-04-25 18:42:40 Python

是否可以在Windows *上*不安装Visual Studio 2008的情况下为Python 2.7至3.1开发C扩展?

我知道Windows上的Python扩展通常必须使用与编译Python本身相同的Visual Studio版本构建,并且我进一步意识到Python 2.7至3.1是使用Visual Studio 2008构建的.我所在的计算机已经安装了VS 2013,并且,正如我发现的无数次一样,快速弄乱Windows开发环境的一种方法是以从旧到最新的任何顺序安装Visual Studio.除此之外,在全新的Wi ..
发布时间:2020-07-04 22:25:12 Python

python C API是否与C ++完全兼容?

据我了解C和C ++之间的关系,后者本质上是前者的扩展,并保留了一定程度的向后兼容性.可以安全地假设可以使用C ++代码调用python C API吗? 更重要的是,我注意到官方python文档在同一页面上将C和C ++扩展捆绑在一起.我在任何地方都找不到C ++ API.这使我相信,两种语言都可以安全使用相同的API. 有人可以确认还是拒绝? 编辑: 我想我使我的问题复杂 ..
发布时间:2020-07-04 22:24:32 C/C++开发

如何使用distutils和/或setuptools在Mac OS X上创建.dylib C扩展?

我需要使用distutils(和/或setuptools)进行C扩展,可以同时在运行时和编译时动态使用distutils(和/或setuptools)(出于不同的目的).在Linux上这不是问题,但在OS X上则是问题.默认情况下,distutils在OS X上创建一个“捆绑包"(并将其命名为.so),该捆绑包可以在运行时使用,但不能在编译时使用.我需要制作一个.dylib,可以在编译时链接到该文 ..

如何从Python C代码中断言?

我正在用C语言编写一个Python类,我想在我的调试代码中放入断言. assert.h非常适合我.这只会放入调试编译器,因此断言失败不会影响Python代码的用户*. 我正在尝试分割我的“库"代码(应该与针对Python链接的代码分开),以便可以将其与其他C代码一起使用.因此,我的Python方法是纯C代码的稀薄包装. 所以我无法在“库"代码中执行此操作: if (black = ..
发布时间:2020-07-04 22:21:20 Python

Python:PyDateTime_FromTimestamp的用法

我正在处理python c-extension,并想创建一个带有unix时间戳的python datetime对象的实例. 在文档站点上( http://docs.python.org/c-api/datetime.html ),我发现了函数PyDateTime_FromTimestamp(),该函数会根据输入参数返回新的引用. 说明如下: 创建并返回一个新的datetime.date ..
发布时间:2020-07-04 22:19:59 Python

PyList_SetItem与PyList_SETITEM

据我所知,PyList_SetItem和PyList_SETITEM之间的区别在于PyList_SetItem会降低其覆盖的列表项的引用计数,而PyList_SETITEM不会. 我有什么理由不总是一直使用PyList_SetItem吗?还是使用PyList_SetItem初始化列表中的索引位置会麻烦吗? 解决方案 PyList_SET_ITEM是一个不安全的宏,它基本上将对象粘贴到 ..
发布时间:2020-07-04 22:17:18 Python

用C语言编写的Python模块传递参数

我已经开始用C语言编写Python模块,这让我非常着迷.我只是从一个简单的示例计算两点范数开始.代码看起来像这样, _norm.c #include #include "norm.h" static char module_docstring[] = "This module provides an interface for computing the ..
发布时间:2020-07-04 22:17:04 其他开发

如何在python中使用C扩展来解决GIL

我想在Python中跨多个核心运行cpu密集型程序,并试图弄清楚如何编写C扩展来做到这一点.是否有任何代码示例或教程? 解决方案 您已经可以将Python程序分为多个进程.操作系统已经在所有核心上分配了您的进程. 执行此操作. python part1.py | python part2.py | python part3.py | ... etc. 操作系统将确保该部分使 ..
发布时间:2020-07-04 22:12:42 Python

从C返回对象到Python

我已经阅读了Python C-API的文档,甚至编写了一些扩展模块.但是,从C函数返回Python对象时,我仍然不清楚确切的语义. Python文档中的有限示例通常显示一个C函数,该函数返回Py_BuildValue的结果.现在,Py_BuildValue返回一个New Reference,并将此引用的所有权转移到解释器.因此,我可以据此推断出,这是一条通用规则,即返回给Python的任何对 ..
发布时间:2020-07-04 22:12:05 Python

python的C扩展中的文档字符串?

在创建Python的C扩展时,是否有可能以某种方式编写以文档字符串给扩展名的用户? 解决方案 类型的文档字符串可以作为文档中的示例. 功能的文档字符串可以包含在ml_doc 字段="nofollow noreferrer">模块的方法表.如果您希望文档字符串在物理上与实际函数“接近",则可以在函数定义上方包括在方法表中引用的字符串常量. 可以将方法的文档字符串分配给 模块的文档字符 ..
发布时间:2020-07-04 22:11:48 Python