问题标签 [python-extensions]

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 投票
3 回答
486 浏览

python - Python 的 __radd__ 不适用于 C 定义的类型

当创建一个使用方法定义noddy.Noddy类型的 python (2.7.5) 扩展时__radd__,它会获得与具有自定义的(否则等效的)python 定义类对象不同的行为__radd__(前者不起作用,而后者起作用)。例子:

以及相应的输出:

该方法d.__radd__未被调用,但w.__radd__被调用。关于为什么会这样的任何想法?[1] + xwhere xis a instance的行为PythonClass似乎与文档一致,我希望也noddy.Noddy能正常工作。此外,两者都是与 . 无关的类型list

欢迎使用解决方法。我已经尝试过list.__radd__forbiddenfruit进行修补,但没有成功,尽管我已将这个问题提请作者注意,他恰好是我的密友。

编辑

...这是 C 土地的图片:

0 投票
3 回答
1597 浏览

c++ - 错误:distutils 扩展模块中的未知文件类型“.hpp”

我正在尝试使用 SWIG 为一些 C++ 代码生成 Python 绑定。

它创造了一些blah_wrap.cxxblah.py文件。

然后我创建了这个setup.py

但后来我得到

.hpp是一个非常标准的 C++ 扩展吗?为什么不.cpp呢?我不知道,原代码的作者把实现放在他的头文件中。

0 投票
1 回答
496 浏览

python - 当类实现 PEP 3118 时 Python 2.7 中 PyBufferProcs 的定义

我正在扩展我们库中的类(支持 Python 2.7)以支持PEP 3118,它已向后移植到 2.7。

从文档中,我需要初始化该tp_as_buffer字段以指向一个PyBufferProcs. 但是,从 2.7 的文档中,该结构的描述仅包含旧缓冲区协议的条目。从消息来源中,我收集PyBufferProcs新协议(bf_getbufferbf_releasebuffer)的一些附加条目。

问题仍然存在:

  • 我必须做一些特别的事情来告诉 Python 这些新条目是有效的吗?

  • 我必须填写旧协议的条目吗?(例如,2.7 的文档说,它bf_getsegcount 可能不为空。但如果我支持 PEP 3118,则不应使用此条目。)

0 投票
1 回答
142 浏览

c++ - Windows Python C 扩展仅适用于我自己的 Python 构建(使用 VC++ 2008 Express 的 32 位构建)

我正在尝试为我们正在使用的库构建一个简单的 Python 包装器。但奇怪的是这个扩展不适用于官方 Python 构建,只能用于我自己的 Python 构建。即使它们基于相同版本的源代码。我也是 C/C++ 菜鸟,所以我不确定我的程序是否正确。

所以我试图包装的一种方法是这样的(从他们的 SDK 文档中复制):

句法

void IoWrite(IOHANDLE hIo, void * sourceBuffer, long size);

参数

hIo IO 信号句柄,即 IoConnect 操作的返回值。

sourceBuffer 包含 IO 信号应具有的值的参数。

size 要写入的信号的大小。

返回值

没有使用返回值。

代码示例

这是 Python 扩展:

这是我的 setup.py:

如果我使用官方的 Python build 2.7.5,它会导致一些使用这个 SDK 的其他应用程序崩溃,但如果我将它与我自己的用 VS 2008 Express 构建的 Python 2.7.5 一起使用,我没有问题。

非常感谢!

有关编译器的其他信息:我使用的是带有 SP1 的 MS Visual C++ 2008 Express Edition,仅此而已。

我的编译器设置

使用“C:\Python27\python.exe setup.py build”编译 我的编译器输出

0 投票
1 回答
1034 浏览

python - Python 函数胶囊

我在 python 2.7.5 的帮助下找到了这个代码片段,这是在用 C 和 C++ 扩展 Python 部分中关于将 C-API 暴露给其他模块的一章:为扩展模块提供 C API

此剪辑适用于功能胶囊。胶囊用于在两个模块之间传递函数。但是这个片段的含义是什么:[...] (PySpam_SystemRETURN (*)PySpam_System_PROTO) [...]. 我认为这有点像静态演员表。类似的东西(int(*)(char s))。但是这个结构的意义是什么?

0 投票
2 回答
1122 浏览

python - windows下无法编译msgpack Python扩展

当我尝试在 windows 下使用 Visual Studio 2008 专业版编译msgpack时

我明白了

显然这是由于 MS 编译器没有适当的 C 支持,所以我下载了最新的msinttypes应该可以解决这个问题。如果我将 inttypes.h 和 stdint.h 放在下面C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include并尝试再次编译,我会得到:

根据谷歌搜索,这看起来像是某个其他头文件正在定义 int8_t。实际上,如果我没记错的话,错误说它是 stdint.h,这是我从 msinttypes 添加的头文件,用于首先解决问题。这台机器还安装了 vs.net 2010 专业版,但我不确定这是否会导致任何问题。

考虑到我在这台机器下的 Windows 下运行了完整的 Python 设置,我无法在 Windows 下切换到 mingw,因为这可能会导致问题,因为所有 Python 2.7 代码都是用 Visual c++ 2008 编译的。

如何编译 msgpack 扩展,以便在 windows 下使用快速版本?

0 投票
1 回答
238 浏览

python - 我可以将 MinGW 编译的 Python 扩展与 Visual C++ 编译的扩展一起使用吗?

在 Windows 下编译 Python 扩展时遇到问题,我问了一个问题。其中一个答案没有回答我的问题,但值得作为一个问题单独提出。

给定 Windows 下的 Visual C++ 编译 Python 发行版,如果我使用 Visual C++ 编译的扩展和 MinGW 编译的扩展,我会有什么问题吗?

当它比配置 MS 编译器更容易时,这将允许我使用 MinGW。

0 投票
1 回答
606 浏览

c++ - 如何使用“=”操作符复制 boost python 列表或他的引用

拿这个代码

问题出在运算符“=”上

在 object_core.hpp 文件的调试器中,这是一个 boost python 核心文件

使用运算符“=”的正确方法是什么

已编辑

问题是堆栈,如果指针 other_class->py_list 为空(或 None 因为未调用类构造函数)程序不能调用函数 Py_DECREF 在 NULL 指针之前不存在引用)

问题是修复调用构造函数

0 投票
0 回答
81 浏览

python - Extending Python Program that has already been compiled to .exe?

I'm making a network analysis tool using python 2.5 ( windows) , that captures network traffic using scapy and stores the capture data in *.pcap file . What i'm trying to achieve is to allow users to write their own functions that can analyze the network traffic . So what i did is that i created a interface class that would allow users to write the function.

Now the problem that i face is that after packaging the whole program as an exe , if i load a analyzer function with the above given structure and it has to import a module lets say " import nmap " how will that work and in case that module is installed on the system ?

So my question is that how do i accomplish this task , is there a better way ?

Thanks in advance .

0 投票
1 回答
3789 浏览

python - Py_BuildValue:用 bool 制作元组?

我在docs中看到,我可以用 int 构建元组值(指定'i')。我需要用 bool 制作元组,例如(True, 10). 如何用 bool 制作这样的元组(需要什么说明符)?