问题标签 [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.
python - Python 的 __radd__ 不适用于 C 定义的类型
当创建一个使用方法定义noddy.Noddy
类型的 python (2.7.5) 扩展时__radd__
,它会获得与具有自定义的(否则等效的)python 定义类对象不同的行为__radd__
(前者不起作用,而后者起作用)。例子:
以及相应的输出:
该方法d.__radd__
未被调用,但w.__radd__
被调用。关于为什么会这样的任何想法?[1] + x
where x
is a instance的行为PythonClass
似乎与文档一致,我希望也noddy.Noddy
能正常工作。此外,两者都是与 . 无关的类型list
。
欢迎使用解决方法。我已经尝试过list.__radd__
用forbiddenfruit进行修补,但没有成功,尽管我已将这个问题提请作者注意,他恰好是我的密友。
编辑
...这是 C 土地的图片:
c++ - 错误:distutils 扩展模块中的未知文件类型“.hpp”
我正在尝试使用 SWIG 为一些 C++ 代码生成 Python 绑定。
它创造了一些blah_wrap.cxx
和blah.py
文件。
然后我创建了这个setup.py
但后来我得到
.hpp
是一个非常标准的 C++ 扩展吗?为什么不.cpp
呢?我不知道,原代码的作者把实现放在他的头文件中。
python - 当类实现 PEP 3118 时 Python 2.7 中 PyBufferProcs 的定义
我正在扩展我们库中的类(支持 Python 2.7)以支持PEP 3118,它已向后移植到 2.7。
从文档中,我需要初始化该tp_as_buffer
字段以指向一个PyBufferProcs
. 但是,从 2.7 的文档中,该结构的描述仅包含旧缓冲区协议的条目。从消息来源中,我收集到
PyBufferProcs
新协议(bf_getbuffer
和bf_releasebuffer
)的一些附加条目。
问题仍然存在:
我必须做一些特别的事情来告诉 Python 这些新条目是有效的吗?
我必须填写旧协议的条目吗?(例如,2.7 的文档说,它
bf_getsegcount
可能不为空。但如果我支持 PEP 3118,则不应使用此条目。)
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”编译
python - Python 函数胶囊
我在 python 2.7.5 的帮助下找到了这个代码片段,这是在用 C 和 C++ 扩展 Python 部分中关于将 C-API 暴露给其他模块的一章:为扩展模块提供 C API
此剪辑适用于功能胶囊。胶囊用于在两个模块之间传递函数。但是这个片段的含义是什么:[...] (PySpam_SystemRETURN (*)PySpam_System_PROTO) [...]
. 我认为这有点像静态演员表。类似的东西(int(*)(char s))
。但是这个结构的意义是什么?
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 下使用快速版本?
python - 我可以将 MinGW 编译的 Python 扩展与 Visual C++ 编译的扩展一起使用吗?
在 Windows 下编译 Python 扩展时遇到问题,我问了一个问题。其中一个答案没有回答我的问题,但值得作为一个问题单独提出。
给定 Windows 下的 Visual C++ 编译 Python 发行版,如果我使用 Visual C++ 编译的扩展和 MinGW 编译的扩展,我会有什么问题吗?
当它比配置 MS 编译器更容易时,这将允许我使用 MinGW。
c++ - 如何使用“=”操作符复制 boost python 列表或他的引用
拿这个代码
问题出在运算符“=”上
在 object_core.hpp 文件的调试器中,这是一个 boost python 核心文件
使用运算符“=”的正确方法是什么
已编辑
问题是堆栈,如果指针 other_class->py_list 为空(或 None 因为未调用类构造函数)程序不能调用函数 Py_DECREF (在 NULL 指针之前不存在引用)
问题是修复调用构造函数
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 .
python - Py_BuildValue:用 bool 制作元组?
我在docs中看到,我可以用 int 构建元组值(指定'i')。我需要用 bool 制作元组,例如(True, 10)
. 如何用 bool 制作这样的元组(需要什么说明符)?