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

python - Python PyQT 的 sip install (make) 错误

我想开发一个带有 GUI 的 Python 应用程序。为此,我找到了一个 PyQT。要使用 PyQT,我必须安装一个 SIP 库。

我的参考是:SIP 文档

对于简历,我必须这样做:

在我安装 GNU 的 make 软件工具并将其放入我的 PATH 之前。

Python configure.py 运行正常。

我的问题是当我在解压缩的 sip 工具的根目录中启动 make 时。

在此处输入图像描述

法语:make[x]: entrant dans le repertoire << C:/dev/sip-4.17>> 翻译英语:make[x]: 进入目录<< C:/dev/sip-4.17>>)

在我点击“确定”按钮后,我的控制台告诉我:

你能帮我理解为什么会发生这种情况以及如何解决这个问题吗?

技术参考:

  • 操作系统:windows 7 pro x64
  • 蟒蛇:2.7.9
  • 制作窗户:已安装
  • SIP : 4.17*
0 投票
0 回答
607 浏览

python-3.x - 为 python 3.4.3+ 安装 PyQt-gpl-5.5.1 和 sip

我正在尝试安装需要 PyQt-gpl-5.5.1 的 eric6-6.1.2,它在

如何为 python 3.4.3+ 安装 sip?

0 投票
2 回答
516 浏览

python - PyQt4.QtCore 的导入钩子

我正在尝试以与此 SO question有点相似的方法设置一些导入挂钩。为此,我需要定义两个函数,如上面链接中所述。这是我的功能,sys.meta_pathfind_moduleload_moduleload_module

这适用于大多数模块,但PyQt4.QtCore在使用 Python 2.7 时失败:

返回,

相同的代码适用于 Python 3.4(尽管imp已被弃用,importlib理想情况下应该在那里使用)。

我想这与 SIP 动态模块初始化有关。Python 2.7 还有什么我应该尝试的吗?

注意:这适用于PyQt4PyQt5

编辑:这可能确实与这个问题有关,

失败并出现相同的错误。我仍然不确定有什么方法可以解决它...

Edit2:根据@Nikita对具体用例示例的请求,我想做的是重定向导入,所以当一个人这样做时import A,会发生什么import B。确实可以认为,为此进行模块重命名find_spec/find_module然后使用 default就足够了load_module。但是,目前尚不清楚在 Python 2 中哪里可以找到默认load_module实现。我发​​现的最接近的类似实现是future.standard_library.RenameImport. 看起来没有importlib从 Python 3 到 2 的完整实现的反向移植。

可以在此gist中找到重现此问题的导入挂钩的最小工作示例。

0 投票
1 回答
480 浏览

c++ - CMake“OBJECT”库:clang没有正确链接

我有一个共享库(目前正在编译、加载和运行)mylib.so。在这个库中,我想使用一个新函数(在另一个外部库中注册它)。签名是bool my_function(const QVariant *, PyObject **)

这个新函数在一个单独的 .cpp 文件中定义,该文件被编译为一个对象,然后链接到mylib.so.

所以我OBJECT用我的自定义函数创建了一个新函数

并在构建我的图书馆时包括这个

它因“未定义对 `my_function' 的引用而失败”

我知道

  • 文件helper_lib.o生成
  • nm helper_lib.o节目

    0000000000000000 T _Z11my_functionPK8QVariantPP7_object

  • nm mylib.o节目

    U my_function

  • helper_lib.o传递给 clang++ :

    clang++ -fPIC [...] -o my_lib.so mylib.o helper_lib.o [...]

我很难看出错误发生在哪里。我可以想象有一些错误,mylib.o其中显示了一个无法与符号名称匹配的未损坏的helper_lib.o符号名称,但我也可能完全走错了轨道。


helper_lib.h

helper_lib.cpp

source.cpp 更复杂,因为它主要包含sip自动生成的代码。

0 投票
1 回答
391 浏览

python - 在 Ubuntu 上导入 PyQt4.QtDeclarative 或 PyQt4.Qt 时 Python 2.7 崩溃

前一段时间(几个月?)程序rqt_plot开始在我的机器上启动(SIGSEGV)崩溃。我终于更深入地追踪了它,发现问题是在 python 尝试导入时出现的PyQt4.QtDeclarative。不幸的是,我不记得这是什么时候开始发生的,而且我的互联网搜索也没有任何结果。任何想法出了什么问题?我怀疑在某个地方有不兼容的软件包更新,但不知道如何找到根本原因。

这是一个简单的会话记录:

以下是一些系统信息:

跟进:

后来我发现我也遇到了同样的问题(分段错误)import PyQt4.Qt

0 投票
1 回答
611 浏览

python - 运行“make”命令时,我可以为 sip-4.18.1 指定 Python.h 的路径吗?

我正在尝试sip-4.18.1RHEL 7. 我有downloaded/installed/configured Python3.5.2

当我在 sip 目录中运行“make”时,出现此错误:

gcc -c -pipe -fPIC -O2 -Wall -W -DNDEBUG -I。-I/usr/include/python2.7 -o siplib.o siplib.c siplib.c:20:20: 致命错误: Python.h: No such file or directory #include

我理解这意味着Python 2.7至少有下载到这台机器,但它看起来没有配置。

有什么方法可以指定 sipPython.h在运行“make”时查找的路径?

0 投票
0 回答
8992 浏览

gcc - 目标“main.o”的配方失败

我正在尝试安装 SIP,以便能够在我的 Windows 系统上安装 PyQt。我正在遵循指南“ https://riverbankcomputing.com/pipermail/pyqt/20 ​​10-May/026642.html ”但@第8步

我收到以下错误。由于对 C 的经验很少,我不知道该怎么做。经过研究,我发现了这个类似的错误Cygwin - Makefile-error: recipe for target `main.o' failed但显然原因应该不同,因为那里的解决方案没有适用于我的情况。

有什么想法吗?

0 投票
2 回答
111 浏览

python-3.x - Python/SIP 规范文件 - kwargs 和 NULL

刚刚开始深入研究 SIP。我有一个 .h 文件,其中包含以下公共方法:

我创建了一个相应的 .sip 文件:

使用 CMake,我可以构建工作,可以将模块导入 Python 并可以调用构造函数(成功有限)。我也可以调用 Allocate 方法。不幸的是,在 Python 方面,我无法暴露float *devMem=NULLorfloat *hostMem=Null参数。我已经浏览过 SIP 文档,并且没有任何注释因为缺失而跳出来。

最终目标是将一个numpy数组(我相信.data属性)传递给hostMem参数。

如何在 SIP 中公开指针?带有默认 NULL 参数的指针呢?

(Python 3.5、PyQt4、SIP 4.18.x)

0 投票
4 回答
14030 浏览

python - RuntimeError: sip 模块实现 API v11.0 到 v11.2 但 PyQt5.QtCore 模块需要 API v11.3

我最近在我的系统上安装了 PyQt4 并开始执行一些基本任务(课程作业),它运行良好。

然后,几天后,我尝试使用matplotlib.

当我尝试import matplotlib.pyplot as plt时,我收到以下错误:

我认为问题出PyQt4在我已经拥有的 while的安装上PyQt5,但是这个网站说它们可以毫无问题地一起正常工作,前提sip是两者的版本相同。

问题似乎来自sip.

我按照这里给出的步骤操作:PyQt5 - SIP API 10 level error。需要 API 11

  1. 当我跑步import sip然后 print(sip, sip.SIP_VERSION_STR)

    我得到以下信息:4.16.9

  2. 然后,当我sip -V在命令提示符下运行时,我得到4.18.

我清楚地看到里面有sip模块中有。

我只想问,我该如何解决这个问题?

我在 Windows 8 64 位系统上,使用 Anaconda3

任何帮助表示赞赏。:)

0 投票
1 回答
202 浏览

python - 努力为 PyQt4 构建 SIP

基本上,尝试构建 SIP 以便我可以安装 PyQt4。我设法使用 python configure.py 这完全没问题 - 我得到了 sipconfig.py 文件。

当我尝试构建时,问题就来了。它不会识别make。我试图让 Visual Studio 来做这件事——但这让我很困惑。任何建议都会非常好 - 我尝试了其他解决方案,但似乎没有任何效果。

所以,是的,任何帮助都会很棒!