问题标签 [python-sip]

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 投票
0 回答
394 浏览

python - 我可以使用 SIP 为我的 Qt C++ 库生成 Python 绑定,然后在 PySide 中调用它吗?

由于许可证,我必须选择 PySide。但是它的 Shiboken 工具是如此缺乏文档。我无法为我的 Qt C++ 库成功生成绑定。

看起来 SIP 至少在文档部分更成熟。我是否可以使用 SIP 生成绑定,然后在 PySide 上运行我的 python 代码来调用绑定?我的用户环境是 Windows XP + Python 2.7 + PySide 1.1.2(基于 Window 安装程序,安装到 C:\Python27\Lib\site-packages\PySide)。

0 投票
1 回答
724 浏览

python - sip 文件语法错误

我正在创建一个 SIP 文件来控制我一直在从事的项目的多个 .sip 文件的构建。我使用 PyQt 附带的文件之一作为示例,说明如何构建一个文件,该文件将导入其他 .sip 文件并在一次调用“sip”时构建它们。当我运行我的 configure.py 脚本时,我得到了输出:

我尝试使用 sip 运行的主要 .sip 文件如下:

我似乎找不到任何明显的语法错误。任何帮助将非常感激。

0 投票
1 回答
3875 浏览

python-2.7 - SIP Makefile 失败(gnuwin 和 mingw)

我已经下载了适用于 python 2.7 的 Sip 模块,创建了一个 makefile 并在make带有 makefile 的目录上尝试了命令,但是我收到了这个错误:

Gnuwin 和 mingw32 都出现此错误。所以我现在不知道该怎么办。任何想法?

0 投票
2 回答
440 浏览

c++ - python-sip:如何从 Python 和 C++ 访问 DLL

我有一个 C++ GUI,它在运行时加载一个 DLL。我使用 SIP 在 python 中导入 DLL。我需要在GUI中嵌入python部分,并且需要一些数据在python和C++之间进行交换。

例如,在 C++ GUI 中,我可以从面板输入命令,例如“drawSomething()”,它会调用 python 中的相应函数,并将结果显示在 GUI 中。

我可以使用 SIP 从 python 对象中提取 C++ 对象(就像 boost.python 那样),还是有更好的方法在 python 和 c++ 之间无缝共享数据?

谢谢。

0 投票
1 回答
255 浏览

python - 通过 Cygwin 进行 MAKE 内存过载(进程过多)

我想要做的是SIP 4.14.7使用 make 命令通过 Cygwin 安装。我在具有 4GB RAM 和 Intel Core 2 Duo 的 Windows 7 x64 SP1 机器上运行 Python 版本 3.3.2(将 Python 添加到 PATH)。由于我所做的是来自 Cygwin 终端,因此我将避免使用 Win32 路径格式。

按照提供的安装说明sip-4.14.7.zip,这是我所做的:

  1. 将.zip解压成/c/python33/SIP/
  2. 启动 Cygwin 终端并进入/cygdrive/c/python33/SIP/文件夹
  3. Ran python configure.py(没有选项,因为我对默认设置很好)
  4. make install

据我所知,我按照我应该做的指示做了,但显然我没有在这里做任何事情。

这是发生的事情:屏幕截图

在 Windows 内存太低之前,进程数make.exe上升到大约 1800 个,整个过程会自行反转,直到不再运行“make.exe”进程,如下所示:SCREENSHOT2

我已经用谷歌搜索了这个并在 stackoverflow.com 上搜索了这里,但找不到与这个特定问题相关的任何内容。似乎除非使用 -j 选项,否则 MAKE 命令一次只能处理一项作业。我也尝试使用 -l 选项,认为它会限制进程,除非有足够的内存可用,但结果是相同的。

我试图提供尽可能多的细节,但如果我应该发布更多信息来帮助诊断这个问题,我很乐意提供。否则,这里的任何建议将不胜感激。

0 投票
1 回答
5827 浏览

python - Python-C 集成:Ctypes、CFFI 或创建二进制模块

基本上我想用 C 编写一个 Python 程序调用函数。

所以(据我所知)我的选择是:

  • CTypes/ CFFI
    • 创建一个包含 C 函数的 DLL/SO/DyLib 并使用 CTypes 或CFFI访问它们。显然CFFI速度更快,唯一的缺点是必须在 python 中声明所有函数签名。
    • 优点:
      • 不必对我的 C 函数进行任何调整。所有类型转换都是在 Python 中完成的。
    • 缺点:
      • 表现 ?
  • Python 二进制模块
    • 用C写一个python接口,把我的C模块转换成二进制python模块
    • 优点:
      • 表现 ?
    • 缺点:
      • 所有类型转换都是在 C 中完成的。使用 [SIP][3] 这可能是自动化的。

将 C 模块转换为 python 二进制模块真的更快吗?

两种解决方案都支持向 C 函数发送 python 回调吗?

SIP 是生成 python 接口的好选择吗?还有其他选择吗?

他们中的任何一个还有其他特殊性吗?

0 投票
0 回答
272 浏览

qt - 如何使 python 扩展模块中的函数对 Emacs 可见?

所以,我有一些想与 python 一起使用的 C++ 库;它们被编译成一系列 .so 文件,我可以很好地导入它们。这些 .so 文件的从 C++ 到 python 的包装器由SIP生成。

但是,我喜欢将 Emacs 用作开发环境,并且诸如自动完成和正确检测包含等功能都不起作用。但是,我注意到其他 IDE 正确显示了模块中可用的自动完成信息。我不知道如何将这些信息输入 emacs,而且我目前不知道其他 IDE 是如何获取它的(也许检查扩展模块?)。

基本上,我想要的信息是加载模块时从解释器级别向用户提供的信息,然后通过生成的 SIP 包装器调用该模块导出的内容的帮助。

我不确定 SIP 是否会从我为我正在使用的库中拥有的 .sip 文件生成一个 .py 文件,但如果是这样,那么如果有人告诉我,我会很高兴,因为我确实看过。

第一次编辑

我正在使用 CEDET 包中的 emacs 语义工具。在我的 .emacs 中,我有两行使用 setenv 添加环境变量 PYTHONPATH 和 LD_LIBRARY_PATH,这样当在 emacs 下生成 python shell 来控制进程时,它可以获取这些外部库。通过一些设置语义-python-依赖-系统-包含路径的调用,我有相同的对应目录可用于语义。

第二次编辑 我发现我正在使用的库是如何为它的 gui 提供自动完成支持和语法检查信息的。它正在加载一个 .api 文件,这是该 .api 文件包含的内容的示例:

tulip.tlp.EDGE_TYPE?10 tulip.tlp.DIRECTED?10 tulip.tlp.INV_DIRECTED?10 tulip.tlp.UNDIRECTED?10 tulip.tlp.ElementType?10 tulip.tlp.NODE?10 tulip.tlp.EDGE?1​​0

这是 .api 文件其余部分的要点!

我该怎么做才能让 emacs 看到 SIP 生成的包装器公开了哪些功能?

0 投票
3 回答
2765 浏览

python - pyqt:无法找到 QtCoremod.sip

我正在构建一个依赖于 pyqt 的项目(例如带有 pyqt 的 VTK)。我收到类似QtCoremod.sip: No such file(或类似的)错误。怎么了?

0 投票
0 回答
730 浏览

python - 用于 C++ 的 SIP Python 包装器

我是 SIP 新手。我正在尝试为 C++ 文件创建一个简单的 python 包装器。如果您有 C++ 的示例 python 包装器,请帮助我。我有一个示例代码。但是当我运行命令时出现错误“sip: string.sip:72: This Python slot requires %MethodCode”:mkdir sipcode cp sipcode-Makefile sipcode/Makefile $(SIP) -s ".cc" -c sipcode字符串.sip

string.sip 的代码如下所述:

%模块字符串

命名空间标准{

类字符串 {

%TypeHeaderCode

包括字符串.h

%结尾

公共:字符串();

无效的str();%MemberCode const char* s; std::string* ptr;

%结尾

无效的getitem();%MemberCode std::string* ptr; 诠释我;

%结尾

}; };

0 投票
1 回答
2436 浏览

python - Python,PyQt4 中的 Qt C++ 代码

我需要使用动态库,用 Python 代码写在 Qt/C++ 上。

我发现了这个工具http://pyqt.sourceforge.net/Docs/sip4/using.html#ref-simple-c-example 我在使用它时遇到了问题。

所以,我有这个 C++ 库的文件

你好.h

你好.cpp

proj.pro

我用qmake-qt4编译 然后使用make,得到了 theesw 文件

然后,Ia 有 SIP 配置文件

配置文件

你好.sip

helloconfig.py.in

然后我用

然后我用 make 弄错了

但这是一个简单的问题,通过添加 -L 即可解决。

我的目录中有新的.so - hello.so

然后,我使用简单的 python 脚本来测试结果。

我有一个错误

我的错误在哪里?我做错了什么?