问题标签 [python-c-extension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
562 浏览

c++ - 我可以在扩展 Python 时使用 C++ 功能吗?

Python 手册说您可以在 C 和 C++ 中为 Python 创建模块。在使用 C++ 时,您可以利用类和模板之类的东西吗?它不会与其他库和解释器产生不兼容吗?

0 投票
6 回答
8182 浏览

python - 在 valgrind 下运行 python 显示很多内存错误是否正常?

我尝试在我的 Python C 扩展中调试内存崩溃,并尝试在 valgrind 下运行脚本。我发现 valgrind 输出中有太多“噪音”,即使我运行了简单的命令:

Valgrind 输出充满重复信息,如下所示:

Slackware 12.2 上的 Python 2.5.2。

这是正常行为吗?如果是这样,那么 valgrind 可能不适合在 Python 中调试内存错误?

0 投票
1 回答
581 浏览

python - 如何获取 distutils 用于构建的拱字符串?

当我使用 构建 ac 扩展python setup.py build时,结果是在名为的目录下创建的

lib.操作系统,CPU和Python版本更改后的部分。

有没有办法可以从 python 访问适合我当前架构的字符串?希望以一种保证与 distutils 正在创建的方式相匹配的方式。

0 投票
1 回答
1331 浏览

python - Python C-API 模块退出处理程序 - atexit 等价物?

我正在使用 Python 2.6.4 版

当我的扩展模块退出/卸载时,我必须从 C 库调用一个函数。对于 C 扩展模块,atexit 的等价物是什么?

0 投票
1 回答
1222 浏览

python - 如何在 Pyrex 中定义初始化的 C 数组?

我想在 Pyrex 中定义初始化的 C 数组,例如:

Pyrex 中的等价物是什么?

只是数组是

但是我怎样才能让它用我的值初始化呢?

0 投票
1 回答
1943 浏览

python - python c扩展,mac os上的dlopen问题

我采用了一个作为二进制库(.a)和头文件分发的库,针对它编写了一些 c++ 代码,并希望将结果包装在一个 python 模块中。

我在这里做过。

问题是在 Mac OSX 上导入此模块时(我尝试过 10.5 和 10.6),我收到以下错误:

这看起来像 Carbon 框架中定义的符号没有被正确解析,但我不知道该怎么做。我提供-framework Carbondistutil.core.Extension'sextra_link_args参数,所以我不确定我还应该做什么。

任何帮助将非常感激。

更新:

setup.py 生成的编译行如下所示:

链接器行如下所示:

otool报告:

更新 2:在 MacOS 10.5 上,将 dlopen 标志从默认的 修改RTLD_NOWRTLD_LAZY解决问题。但是,这不适用于 Mac OS 10.6。

在 10.6 上,以下序列允许库正常运行,尽管我不确定为什么:

  1. python setup.py build -v
  2. 再次手动运行链接器行(由 setup.py 打印到控制台)。
  3. python setup.py 安装

我仍在寻找有关如何使其正常工作的好答案。谢谢!

0 投票
4 回答
62955 浏览

python - 在 Windows 上为 Python 2.7 构建 lxml

我正在尝试在 Windows 64 位机器上为 Python 2.7 构建 lxml。我找不到 Python 2.7 版本的 lxml 鸡蛋。所以我从源代码编译它。我正在按照本网站上的说明进行操作

http://lxml.de/build.html

在静态链接部分下。我收到错误

谁能帮我这个?我尝试设置 Microsoft Visual Studio 的路径。我可以从命令行运行 vcvarsall.bat 。但是 python 有问题

0 投票
1 回答
5334 浏览

python - Python C API:打开 PyObject 类型

我有一些代码可以将 Python 与 C++ 接口,这些代码运行良好,但每次我看到它时,我都认为必须有更好的方法来做到这一点。在 C++ 方面,有一个“变体”类型可以处理固定范围的基本类型——int、real、string、变体向量等。我有一些代码使用 Python API 从等效的 Python 类型转换。它看起来像这样:

问题是链式 if-else ifs。它似乎在调用一个 switch 语句,或者一个由类型标识符作为键的创建函数的表或映射。换句话说,我希望能够写出类似的东西:

根据对 API 文档的浏览,直接在此处获取“typeID”的最佳方法并不明显。我看到我可以做这样的事情:

这显然让我快速了解类型信息,但是使用它与我感兴趣的有限类型集相关的最简洁的方法是什么?

0 投票
1 回答
1744 浏览

python - PyArg_ParseTuple 导致分段错误

我正在尝试从我的扩展程序中调用 ac 函数,并将问题缩小到这个测试用例。

任何想法我可能做错了什么。(Python 版本 2.6.4)。

0 投票
5 回答
6086 浏览

python - 如何在 python 中使用 C 扩展来绕过 GIL

我想在 Python 中跨多个内核运行一个 cpu 密集型程序,并试图弄清楚如何编写 C 扩展来做到这一点。有这方面的代码示例或教程吗?