【问题标题】:Segmentation fault (core dumped) in python 2.7 when importing pyqtgraph导入pyqtgraph时python 2.7中的分段错误(核心转储)
【发布时间】:2017-12-02 22:32:10
【问题描述】:

所以我一直在从事一个 python 项目,我想在其中使用 pyqtgraph 实时绘制来自传感器的数据。

但是,当我第一次尝试运行代码时,我得到了一个Segmentation fault (core dumped)

我可以隔离导致崩溃的那一行代码import pyqtgraph as pg

运行 gdb 产生:

gdb python

[...]
Reading symbols from python...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/python 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyqtgraph

Program received signal SIGSEGV, Segmentation fault.
strlen () at ../sysdeps/x86_64/strlen.S:106
106 ../sysdeps/x86_64/strlen.S: No such file or directory.
(gdb) backtrace
#0  strlen () at ../sysdeps/x86_64/strlen.S:106
#1  0x00000000004ee6f6 in PyString_FromFormatV ()
#2  0x0000000000506e80 in PyErr_Format ()
#3  0x00007ffff0e69acb in ?? () from /usr/lib/python2.7/dist-packages/sip.so
#4  0x00007ffff58143a3 in initQtGui () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so
#5  0x0000000000427992 in _PyImport_LoadDynamicModule ()
#6  0x000000000055642f in ?? ()
#7  0x00000000004e2dec in ?? ()
#8  0x0000000000556cf1 in ?? ()
#9  0x0000000000569cd8 in ?? ()
#10 0x00000000004c8c8b in PyEval_CallObjectWithKeywords ()
#11 0x00000000005264a8 in PyEval_EvalFrameEx ()
#12 0x0000000000555551 in PyEval_EvalCodeEx ()
#13 0x00000000005b41e2 in PyEval_EvalCode ()
#14 0x00000000005b429a in PyImport_ExecCodeModuleEx ()
#15 0x00000000005942af in ?? ()
#16 0x000000000055642f in ?? ()
#17 0x0000000000556838 in ?? ()
#18 0x0000000000556d9b in ?? ()
#19 0x0000000000569cd8 in ?? ()
#20 0x00000000004c8c8b in PyEval_CallObjectWithKeywords ()
#21 0x00000000005264a8 in PyEval_EvalFrameEx ()
#22 0x0000000000555551 in PyEval_EvalCodeEx ()
#23 0x00000000005b41e2 in PyEval_EvalCode ()
#24 0x00000000005b429a in PyImport_ExecCodeModuleEx ()
#25 0x00000000005942af in ?? ()
#26 0x0000000000465804 in ?? ()
#27 0x000000000055642f in ?? ()
#28 0x0000000000556838 in ?? ()
#29 0x0000000000556c4b in ?? ()
#30 0x0000000000569c08 in ?? ()
#31 0x00000000004c8c8b in PyEval_CallObjectWithKeywords ()
#32 0x00000000005264a8 in PyEval_EvalFrameEx ()
#33 0x0000000000567d14 in ?? ()
#34 0x0000000000465a2d in PyRun_InteractiveOneFlags ()
#35 0x0000000000465b49 in PyRun_InteractiveLoopFlags ()
#36 0x00000000004661fe in PyRun_AnyFileExFlags ()
#37 0x0000000000466d92 in Py_Main ()
#38 0x00007ffff7814f45 in __libc_start_main (main=0x466e50 <main>, argc=1, argv=0x7fffffffd8c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd8b8)
    at libc-start.c:287
#39 0x0000000000577c2e in _start ()
(gdb) 
#0  strlen () at ../sysdeps/x86_64/strlen.S:106
#1  0x00000000004ee6f6 in PyString_FromFormatV ()
#2  0x0000000000506e80 in PyErr_Format ()
#3  0x00007ffff0e69acb in ?? () from /usr/lib/python2.7/dist-packages/sip.so
#4  0x00007ffff58143a3 in initQtGui () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so
#5  0x0000000000427992 in _PyImport_LoadDynamicModule ()
#6  0x000000000055642f in ?? ()
#7  0x00000000004e2dec in ?? ()
#8  0x0000000000556cf1 in ?? ()
#9  0x0000000000569cd8 in ?? ()
#10 0x00000000004c8c8b in PyEval_CallObjectWithKeywords ()
#11 0x00000000005264a8 in PyEval_EvalFrameEx ()
#12 0x0000000000555551 in PyEval_EvalCodeEx ()
#13 0x00000000005b41e2 in PyEval_EvalCode ()
#14 0x00000000005b429a in PyImport_ExecCodeModuleEx ()
#15 0x00000000005942af in ?? ()
#16 0x000000000055642f in ?? ()
#17 0x0000000000556838 in ?? ()
#18 0x0000000000556d9b in ?? ()
#19 0x0000000000569cd8 in ?? ()
#20 0x00000000004c8c8b in PyEval_CallObjectWithKeywords ()
#21 0x00000000005264a8 in PyEval_EvalFrameEx ()
#22 0x0000000000555551 in PyEval_EvalCodeEx ()
#23 0x00000000005b41e2 in PyEval_EvalCode ()
#24 0x00000000005b429a in PyImport_ExecCodeModuleEx ()
#25 0x00000000005942af in ?? ()
#26 0x0000000000465804 in ?? ()
#27 0x000000000055642f in ?? ()
#28 0x0000000000556838 in ?? ()
#29 0x0000000000556c4b in ?? ()
#30 0x0000000000569c08 in ?? ()
#31 0x00000000004c8c8b in PyEval_CallObjectWithKeywords ()
#32 0x00000000005264a8 in PyEval_EvalFrameEx ()
#33 0x0000000000567d14 in ?? ()
#34 0x0000000000465a2d in PyRun_InteractiveOneFlags ()
#35 0x0000000000465b49 in PyRun_InteractiveLoopFlags ()
#36 0x00000000004661fe in PyRun_AnyFileExFlags ()
#37 0x0000000000466d92 in Py_Main ()
#38 0x00007ffff7814f45 in __libc_start_main (main=0x466e50 <main>, argc=1, argv=0x7fffffffd8c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd8b8)
    at libc-start.c:287
#39 0x0000000000577c2e in _start ()
(gdb) 
#0  strlen () at ../sysdeps/x86_64/strlen.S:106
#1  0x00000000004ee6f6 in PyString_FromFormatV ()
#2  0x0000000000506e80 in PyErr_Format ()
#3  0x00007ffff0e69acb in ?? () from /usr/lib/python2.7/dist-packages/sip.so
#4  0x00007ffff58143a3 in initQtGui () from /usr/lib/python2.7/dist-packages/PyQt4/QtGui.so
#5  0x0000000000427992 in _PyImport_LoadDynamicModule ()
#6  0x000000000055642f in ?? ()
#7  0x00000000004e2dec in ?? ()
#8  0x0000000000556cf1 in ?? ()
#9  0x0000000000569cd8 in ?? ()
#10 0x00000000004c8c8b in PyEval_CallObjectWithKeywords ()
#11 0x00000000005264a8 in PyEval_EvalFrameEx ()
#12 0x0000000000555551 in PyEval_EvalCodeEx ()
#13 0x00000000005b41e2 in PyEval_EvalCode ()
#14 0x00000000005b429a in PyImport_ExecCodeModuleEx ()
#15 0x00000000005942af in ?? ()
#16 0x000000000055642f in ?? ()
#17 0x0000000000556838 

在 Python3 中运行同样的程序完全没问题,但使用 Python3 对我来说不是一个选择,因为这会与我项目的大部分框架发生冲突。

我也尝试过多次通过 pip 重新安装 pyqtgraph。

$ pip show pyqtgraph
Name: pyqtgraph
Version: 0.10.0
Summary: Scientific Graphics and GUI Library for Python
Home-page: http://www.pyqtgraph.org
Author: Luke Campagnola
Author-email: luke.campagnola@gmail.com
License: MIT
Location: /usr/local/lib/python3.4/dist-packages
Requires: numpy

我已经搜索和尝试了几个小时,但没有找到任何解决方案,因此我将不胜感激。

干杯

一个绝望的程序员。

【问题讨论】:

  • 您的操作系统和 Qt 版本是什么?你是如何获得PyQt的?
  • 我的第一个猜测是它与 PyQtGraph 无关,而是与 PyQt4 相关,因为前者是一个纯 python 包。如果您启动 Python 2 命令提示符并键入 from PyQt4 import QtGui 会发生什么?
  • Ubuntu 14.04 关于PyQt 不知道,刚开始工作的时候就预装了。我也试过 import PyQt4 但它没有改变任何东西,from PyQt4 import QtGui 也没有造成任何麻烦。

标签: python python-2.7 segmentation-fault coredump pyqtgraph


【解决方案1】:

我不相信 Python 2.x 和 3.x 是链接兼容的。

您正在将 3.x 模块加载到 2.x Python 中,这根本无法正常工作。

您需要构建(或在某处找到)pyqtgraph 的 2.x 版本。

(我很惊讶您在崩溃之前没有收到有关此影响的警告。)

【讨论】:

  • 确实如此。上面的pip 似乎属于Python 3。要在Python 2 下安装PyQtGraph,您必须找到Python 2 包的pip 并使用它来安装PyQtGraph。
  • 我确实在我自己的笔记本上用 python 版本 2.7.13 和 3.6.1 尝试过。
  • 在 2.7.13 中我收到了错误 no module named pyqtgraph 在 3.6.1 中它运行良好。然而,在我的工作笔记本上,没有出现错误消息,只是出现了分段错误。
  • @Ramdambo "no module named ..." -- 是的,正如我上面所说,您需要自己构建它,或者找到一个为 for构建的预构建副本> python 2.x
猜你喜欢
  • 2015-02-27
  • 1970-01-01
  • 2016-10-17
  • 2020-04-09
  • 1970-01-01
  • 2022-08-23
  • 2017-01-13
  • 2022-08-02
  • 2020-07-14
相关资源
最近更新 更多