【问题标题】:Segmentation fault (core dumped) Error in PyQt5PyQt5 中的分段错误(核心转储)错误
【发布时间】:2017-05-16 04:01:30
【问题描述】:

我刚刚在运行 ubuntu 16.04 的谷歌计算引擎机器上安装了 PyQt 5.7.0:

但是,当我想运行 PyQt 并导入一些模块时,它会产生 Segmentation fault (core dumped) 错误,如图所示:

我能知道我该如何解决吗?我已经为此寻找了几个小时的答案,但仍然找不到答案。如果有人可以提供帮助,将不胜感激。

【问题讨论】:

  • 你自己编译了PyQt5吗?您是否尝试过使用不同的Python 版本?我遇到了你描述的同样的问题,我设法通过将 Python 降级到版本 3.4.3 来解决它。
  • @DanielePantaleone 我确实尝试过 python 5.6.2,它可以工作,但它不支持 QtWebEngine,它使用 QtWebKit 代替
  • Python 5.6.2???????我猜你的意思是PyQt 5.6.2,你需要降级Python,而不是PyQt ;)
  • 我使用了Python 3.4.3 + PyQt 5.7 和SIP 4.18.1。我自己在Qt5.7 之上编译了所有内容,一切顺利。
  • 我用的不是Ubuntu而是CentOS,但都是一样的;)

标签: python python-3.x ubuntu pyqt pyqt5


【解决方案1】:

您可以尝试(如 cmets 中所述)使用不同版本的 Python 自己编译 PyQt5.7(3.4.3 和 3.4.4 对我有用,3.5 以上的所有内容都没有)。请注意,我自己也编译了Qt5.7,但您可以使用安装程序提供的那个。以下是设置虚拟环境的一组简短且详尽的命令:

使用 apt 安装依赖项:

sudo apt-get install -y build-essential libgl1-mesa-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libfontconfig1-dev libfreetype6-dev libglu1-mesa-dev libssl-dev libcups2-dev python3-pip git

安装 Python 3.4.4:

cd ~/Downloads
wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tar.xz
tar xf Python-3.4.4.tar.xz
cd Python-3.4.4
./configure
sudo make altinstall

创建虚拟环境:

sudo pip3 install virtualenv
virtualenv -p /usr/local/bin/python3.4 ~/python34
source ~/python34/bin/activate

安装Qt:

cd ~/Downloads
git clone git://code.qt.io/qt/qt5.git
cd ~/Downloads/qt5
git checkout 5.7
./init-repository
./configure -prefix ~/Qt/5.7/gcc_64 -opensource -nomake examples -nomake tests -release -confirm-license
make -j 5
make install

安装 SIP:

cd ~/Downloads
wget http://downloads.sourceforge.net/project/pyqt/sip/sip-4.18.1/sip-4.18.1.tar.gz
tar xf sip-4.18.1.tar.gz
cd sip-4.18.1
python configure.py
make
sudo make install

安装 PyQt:

cd ~/Downloads
wget http://downloads.sourceforge.net/project/pyqt/PyQt5/PyQt-5.7/PyQt5_gpl-5.7.tar.gz
tar xf PyQt5_gpl-5.7.tar.gz
cd PyQt5_gpl-5.7
python configure.py --qmake ~/Qt/5.7/gcc_64/bin/qmake --disable QtPositioning --no-qsci-api --no-designer-plugin --no-qml-plugin --confirm-license
make -j 5
sudo make install

【讨论】:

  • 我有一个分段错误核心转储错误,仅在退出 PyQt 应用程序时出现。安装开发依赖项(通过this GitHub comment 清除 libpng-dev 的一些未满足的依赖项)对我很有效。我通过sudo apt-get Python3-PyQt5 安装了 PyQt5。我在 ubuntu 16.04
【解决方案2】:

注意事项:

  • 我假设你现在不能在你的 vm 中运行任何 GUI 程序。
  • 我对 GCE 平台不太熟悉,也没有尝试过我要提出的建议

按照Your desktop on Google Cloud Platform 的步骤在 GCE 虚拟机(Linux 操作系统将基于 X11)以及 vnc 服务器中安装桌面 GUI 管理器。

一旦您使用 realvnc 或tightvnc 查看器在您的虚拟机中进行 vnc,则可能会运行一个 GUI 应用程序。您可能必须更改 X11 DISPLAY 变量——尽管上面的链接没有讨论这一点——因为 AFAIR *nix 系统使用一个单独的 VNC 桌面会话而不是当前登录的桌面会话。

如果没有用户登录到 GCE 虚拟机,我怀疑它会运行。

【讨论】:

  • 这不是问题,QtCore 不包含任何需要显示的东西。
  • @thecompiler 你是对的,但如果一切都失败了,那值得一试
【解决方案3】:

如果您使用 apt 或 apt-get 安装 PyQt5,现在也这样做

sudo pip3 安装 pyqt5

【讨论】:

    【解决方案4】:

    您不能远程运行 GUI 程序 (PyQt),除非两台机器都使用 X11 协议并正确设置了 DISPLAY 变量和 xhost 权限。我怀疑 Google 计算引擎是否可以配置为在 X11 模式下运行。

    【讨论】:

    • 那么可以在 GCE 上运行 PyQt 吗?因为我的网络自动化需要它(即:启用 cookie 和 js 的表单提交,因为 cookie 是使用 js 设置的)
    • @dramasea 正如我所说,你不能这样做。出于任何实际目的,“你不能”意味着“不可能”。
    • 我不认为这是问题所在,因为他在导入 PyQt5 模块时遇到了分段错误,而不是在运行程序时。我可以在没有 X11 的 CentOS 机器上成功导入 PyQt5modules。对我来说,似乎存在一些编译问题。
    • 确实:from PyQt5 import * 完全是无操作的,QtCore 不包含任何与 gui 相关的内容。
    【解决方案5】:

    当你导入 PyQt5 时,它也会导入 PyQt5.QtCore,因为 PyQt5.QtCore 是 PyQt5 的一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      • 2012-11-19
      • 1970-01-01
      • 2015-06-25
      • 2021-06-03
      相关资源
      最近更新 更多