问题标签 [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 投票
1 回答
465 浏览

python - C 代码在尝试通过 xmlrpc 调用 Python 远程过程时崩溃

我正在尝试创建创建 Python xmlrpc 客户端并调用 xmlrpc 服务器上的方法的 C 代码(我正在考虑将其用作挂钩 DLL 的 IPC)。

这是代码……在它起作用之前,我不会对引用计数进行分层。

我已经确认我的 Python xmlrpc 服务器在从另一个 Python 服务器代理调用时工作正常。当我尝试运行上述可执行文件时,它在PyObject_CallMethod(). 为什么?

0 投票
1 回答
2966 浏览

python - Upskirt 的 Python 扩展:字符串末尾的垃圾

我一直在尝试为Upskirt制作 Python 扩展。我认为第一个 C 项目不会太难,因为有示例(Upskirt 代码中的示例程序和 Ruby 扩展)。

扩展有效,它转换了我扔给它的 Markdown,但有时输出在字符串末尾有一些垃圾。而且我不知道是什么原因造成的。

这是一些输出:

我的代码可以在我的 Github repo中找到。我称它为 pantyshot,因为当我听到超短裙时我想到了这个。奇怪的名字,我知道。

我希望有一个人可以帮助我。

0 投票
1 回答
1420 浏览

python - Possible to use wide-character members in Python extension objects?

It's simple to create a member for an object in a Python C extension with a base type of char *, using the T_STRING define in the PyMemberDef declaration.

Why does there not seem to be an equivalent for wchar_t *? And if there actually is one, what is it?

e.g.

struct object contains char *text

PyMemberDef array has {"text", T_STRING, offsetof(struct object, text), READONLY, "This is a normal character string."}

versus something like

struct object contains wchar_t *wtext

PyMemberDef array has {"wtext", T_WSTRING, offsetof(struct object, wtext), READONLY, "This is a wide character string"}

I understand that something like PyUnicode_AsString() and its related methods can be used to encode the data in UTF-8, store it in a basic char string, and decode later, but doing it that way would require wrapping the generic getattr and setattr methods/functions with ones that account for the encoded text, and it's not very useful when you want character arrays of fixed element size within a struct and don't want the effective number of characters that can be stored in it to vary.

0 投票
1 回答
188 浏览

python - 在运行时向 python 公开一个新类型

我已经完成并定义了我的新类型,将它们存储在 pytypeobject 中并调用了以下函数(在初始化解释器之后):

PyType_Ready(); //这需要我定义的类型

PyModule_AddObject(); //这会将定义的类型添加到我使用 PyModule_Create() 创建的模块中;

现在,当我尝试使用我定义的类型时,解释器说它不存在,所以我假设必须采取另一个步骤才能在运行时添加类型,或者我必须执行其他一些步骤采取实现这一目标。

任何帮助将不胜感激。

Python 语法错误:

测试脚本内容:

Bound 是我定义模块的名称,而 Foo 是我试图定义的类型,用于测试目的。

0 投票
1 回答
543 浏览

c++ - 函数指针是否跨进程保持有效?

我编写了一个扩展模块,它使用 C++ 函数指针来存储函数调用序列。我想使用 python 的multiprocessing模块在单独的进程中“运行”这些调用序列(没有共享状态,所以没有同步问题)。

我需要知道函数指针(不是数据指针)在它之后multiprocessing是否仍然有效fork()

C++ 模块:

编译:

跨多个进程调用它的 Python 代码:

输出符合预期。我想知道我是否只是“走运”,或者我是否可以可靠地期望函数指针在fork().

0 投票
1 回答
3197 浏览

macos - Mac os x上的Cmake,使用完整路径链接库

我正在尝试用 cmake 构建一个 python 扩展。这是 cmake 列表:

该库已正确编译和链接,但是当我使用 otool 查看喜欢的库时,我得到:

如何让 CMake 将 drtile.so 与 vigranumpycore.so 和 libboost_python.dylib 的完整路径链接起来?谢谢!

0 投票
2 回答
9110 浏览

python - 为 python 2.7 编译 libdnet

我正在尝试在 win32 python2.7 上使用 scapy

我已经设法编译了所有其他依赖项,除了这个

可以帮助实现这个可执行文件的目标吗?“dnet-1.12.win32-py2.7.exe”

(我保证也会更新这个问题和 scapy 手册,

使用 Python 2.7 在 Windows 上运行 Scapy

更新:

我已经设法用 mingw32 编译它,我正在使用 vs2005,我必须对 libdnet 进行一些修复才能实际工作(看起来他们上次在 windows 上编译它是用 vs6.0

我会尝试更新 scapy 手册...(并将可执行文件上传到那里)

0 投票
1 回答
487 浏览

python - Cython 1.1.2 和 const 正确性

我正在尝试使用 Cython 为我的 C 库编写 python 扩展。我已经创建了一个 setup.py 文件 - 但是当我尝试构建我的 pxd 和 pyx 文件时,我得到一个错误。

经过一番调查,Cython 似乎无法使用 const 参数来 grok 函数。每当我删除 const 说明符时,编译都会继续,直到下一个具有 const 参数的函数原型。

这是 Cython 的已知限制 - 还是我错过了更基本的东西?

我正在使用 Python 2.6.5 运行 Cython 0.11.2

0 投票
9 回答
21555 浏览

python - Cython 编译的 C 扩展:ImportError: dynamic module does not define init function

我刚刚使用 Cython 将我的 C 库的一部分编译为扩展,作为“概念证明”。我设法破解了代码(除了常量更正问题等),最终构建了一个扩展。

但是,当我尝试导入新创建的扩展时,出现以下错误:

我做错了什么,我该如何解决这个问题?

我在 Ubuntu 10.0.4 上使用 Cythn 0.11.2 和 Python 2.6.5

0 投票
1 回答
243 浏览

python - 如何为 Cython 创建具有依赖项的单独文件以及如何修复编译错误:无法将 Python 对象转换为“mySet*”

我正在尝试使用 Cython 构建我的第一个 python 扩展。

我的 C 文件在逻辑上是分区的,并且功能是“嵌套的”——模块 C 依赖于模块 B 中定义的函数,然后依赖于模块 A。

我发现很难理解如何对我的 .pxd 和 .pyx 文件进行分区,以便我可以保持功能模块之间的依赖关系。

以下片段,希望能帮助澄清情况:

注意:文件 FooBar.h 包含一个文件 CommonDefs.h,它声明了常用数据类型并为这些常用类型(myArray 和 mySet)提供了一个简单的 API。

我已经创建了 ccommontypes.pxd 和 commontypes.pyx 文件,它们导出在 CommonDefs.h 和 CommonDefs.c 中声明/定义的数据类型和函数。我能够从中成功编译一个 python 扩展模块。

我现在想进入下一个阶段,即导出依赖于 CommonDefs.h 的数据类型和函数。但是,我发现我不得不重新声明 myArray 和 mySet 类型(即使它们已经在 ccommontypes.pxd

我似乎无法找到导入或包含这些声明的方法,因此我不得不在下面的文件中重新声明它们,因为这些函数采用 myArray 和 mySet 类型的参数。

问题 1 是否可以像我在下面所做的那样再次重新声明类型,或者我需要注意什么问题?

问题 2 从上面的 FooBar ctor 代码中,内存分配函数需要一个指向 mySet 变量的指针。但是,当我尝试编译此代码时,出现此错误:

无法将 Python 对象转换为“mySet *”

我理解错误消息,但由于 Python 不是静态类型的,我不知道如何指定数据类型。

我将不胜感激有关解决此问题的一些帮助。