问题标签 [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 - C 代码在尝试通过 xmlrpc 调用 Python 远程过程时崩溃
我正在尝试创建创建 Python xmlrpc 客户端并调用 xmlrpc 服务器上的方法的 C 代码(我正在考虑将其用作挂钩 DLL 的 IPC)。
这是代码……在它起作用之前,我不会对引用计数进行分层。
我已经确认我的 Python xmlrpc 服务器在从另一个 Python 服务器代理调用时工作正常。当我尝试运行上述可执行文件时,它在PyObject_CallMethod()
. 为什么?
python - Upskirt 的 Python 扩展:字符串末尾的垃圾
我一直在尝试为Upskirt制作 Python 扩展。我认为第一个 C 项目不会太难,因为有示例(Upskirt 代码中的示例程序和 Ruby 扩展)。
扩展有效,它转换了我扔给它的 Markdown,但有时输出在字符串末尾有一些垃圾。而且我不知道是什么原因造成的。
这是一些输出:
我的代码可以在我的 Github repo中找到。我称它为 pantyshot,因为当我听到超短裙时我想到了这个。奇怪的名字,我知道。
我希望有一个人可以帮助我。
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.
python - 在运行时向 python 公开一个新类型
我已经完成并定义了我的新类型,将它们存储在 pytypeobject 中并调用了以下函数(在初始化解释器之后):
PyType_Ready(); //这需要我定义的类型
PyModule_AddObject(); //这会将定义的类型添加到我使用 PyModule_Create() 创建的模块中;
现在,当我尝试使用我定义的类型时,解释器说它不存在,所以我假设必须采取另一个步骤才能在运行时添加类型,或者我必须执行其他一些步骤采取实现这一目标。
任何帮助将不胜感激。
Python 语法错误:
测试脚本内容:
Bound 是我定义模块的名称,而 Foo 是我试图定义的类型,用于测试目的。
c++ - 函数指针是否跨进程保持有效?
我编写了一个扩展模块,它使用 C++ 函数指针来存储函数调用序列。我想使用 python 的multiprocessing
模块在单独的进程中“运行”这些调用序列(没有共享状态,所以没有同步问题)。
我需要知道函数指针(不是数据指针)在它之后multiprocessing
是否仍然有效fork()
。
C++ 模块:
编译:
跨多个进程调用它的 Python 代码:
输出符合预期。我想知道我是否只是“走运”,或者我是否可以可靠地期望函数指针在fork()
.
macos - Mac os x上的Cmake,使用完整路径链接库
我正在尝试用 cmake 构建一个 python 扩展。这是 cmake 列表:
该库已正确编译和链接,但是当我使用 otool 查看喜欢的库时,我得到:
如何让 CMake 将 drtile.so 与 vigranumpycore.so 和 libboost_python.dylib 的完整路径链接起来?谢谢!
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 手册...(并将可执行文件上传到那里)
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
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
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 不是静态类型的,我不知道如何指定数据类型。
我将不胜感激有关解决此问题的一些帮助。