【问题标题】:Segmentation fault when using PyQt4 with python3将 PyQt4 与 python3 一起使用时出现分段错误
【发布时间】:2017-10-05 13:45:48
【问题描述】:

在使用 ubuntu 16.04 导入带有 python (3.5.2) 的 PYQt4 时收到分段错误。例如,以下代码会产生分段错误:

import PyQt4.QtCore

我想有些模块安装不匹配...这是回溯:

Program received signal SIGSEGV, Segmentation fault.
0x000000000055c220 in PyType_IsSubtype ()
(gdb) backtrace
#0  0x000000000055c220 in PyType_IsSubtype ()
#1  0x00007ffff4969221 in vp_convertor () from /usr/local/lib/python3.5/dist-packages/sip.so
#2  0x00007ffff4969ab5 in sip_api_convert_to_void_ptr () from /usr/local/lib/python3.5/dist-packages/sip.so
#3  0x00007ffff5f41b7d in ?? () from /usr/lib/python3/dist-packages/PyQt4/QtCore.cpython-35m-x86_64-linux-gnu.so
#4  0x00007ffff5e1eb54 in PyInit_QtCore () from /usr/lib/python3/dist-packages/PyQt4/QtCore.cpython-35m-x86_64-linux-gnu.so
#5  0x000000000060605e in _PyImport_LoadDynamicModuleWithSpec ()
#6  0x0000000000606618 in ?? ()
#7  0x00000000004e9c56 in PyCFunction_Call ()
#8  0x000000000052ad74 in PyEval_EvalFrameEx ()
#9  0x000000000052d2e3 in ?? ()
#10 0x0000000000529332 in PyEval_EvalFrameEx ()
#11 0x0000000000528814 in PyEval_EvalFrameEx ()
#12 0x0000000000528814 in PyEval_EvalFrameEx ()
#13 0x0000000000528814 in PyEval_EvalFrameEx ()
#14 0x0000000000528814 in PyEval_EvalFrameEx ()
#15 0x000000000052e12b in PyEval_EvalCodeEx ()
#16 0x00000000004ebcc3 in ?? ()
#17 0x00000000005b7167 in PyObject_Call ()
#18 0x00000000005b7f8a in _PyObject_CallMethodIdObjArgs ()
#19 0x000000000051ba98 in PyImport_ImportModuleLevelObject ()
#20 0x00000000005c7688 in ?? ()
#21 0x00000000004e9bc7 in PyCFunction_Call ()
#22 0x00000000005b7167 in PyObject_Call ()
#23 0x0000000000523800 in PyEval_CallObjectWithKeywords ()
#24 0x0000000000526fbc in PyEval_EvalFrameEx ()
#25 0x000000000052d2e3 in ?? ()
#26 0x000000000052dfdf in PyEval_EvalCode ()
#27 0x00000000005fd2c2 in ?? ()
#28 0x00000000005ff76a in PyRun_FileExFlags ()
#29 0x00000000005ff95c in PyRun_SimpleFileExFlags ()
#30 0x000000000063e7d6 in Py_Main ()
#31 0x00000000004cfe41 in main ()

你对如何解决这个问题有任何想法吗?

  • SIP 版本为 4.19.3
  • PyQt5 版本是 5.9 会不会有问题?

提前致谢!

【问题讨论】:

  • 回溯是完全没用的,除非你有 python、pyqt 和 qt 的调试版本(即使那样,它也可能不相关)。您需要描述您所在的平台以及您安装的确切版本(即精确版本),以及您安装它们的方式和位置。
  • 感谢您的评论,我已经更新了一些信息。一般来说,我使用 pip install 或 apt-get。
  • 所以您安装了 PyQt5,但您尝试导入 PyQt4?为什么?
  • 我也有python3-pyqt4:版本(4.11.4+dfsg-1build4)。原因是我正在使用一个使用 PyQt4 的库。
  • 如果你在 ubuntu 上,只安装官方包。如果你从其他来源安装,你可能会破坏一些东西。

标签: python-3.x pyqt4 python-sip


【解决方案1】:

我今天也遇到了这个问题。我的 Python 3 和 pip 来自包管理器。但我随后通过get-pip.py 安装了更新的 pip。

从我从gdb 获得的堆栈跟踪中,似乎可能有一个替代 SIP 库(虽然我使用的是 Python 3.6):

/usr/local/lib/python3.6/dist-packages/sip.so
/usr/lib/python3/dist-packages/sip.cpython-36m-x86_64-linux-gnu.so

我通过您提供的以下代码进行了测试。如果我在/usr/local/lib 中删除了.so,它不会抱怨。相反,分段错误消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 2019-01-28
    • 2019-04-12
    • 1970-01-01
    • 2013-12-27
    • 2015-05-01
    相关资源
    最近更新 更多