PyQt5中的分段错误(核心转储)错误

时间:2017-01-02 00:18:04

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

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

enter image description here

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

enter image description here

我可以知道如何解决它吗?几个小时以来我一直在寻找答案,但仍然无法找到答案。如果有人能提供帮助,我们将不胜感激。

5 个答案:

答案 0 :(得分:3)

您可以尝试(如评论中所述)自己编译PyQt5.7,使用不同版本的Python(3.4.33.4.4为我工作,{{1}以上的所有内容} 没有)。请注意,我自己也编译了3.5,但您可以使用安装程序提供的版本。以下是设置虚拟环境的简短,有希望的详尽命令集:

使用apt:

安装依赖项
Qt5.7

安装Python 3.4.4:

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

创建虚拟环境:

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

安装Qt:

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

安装SIP:

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

安装PyQt:

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

答案 1 :(得分:0)

注意事项:

  • 我将假设您现在无法在您的虚拟机中运行任何GUI程序。
  • 我对GCE平台并不熟悉,并没有尝试过我要提出的建议

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

使用realvnc或tightvnc查看器进入vm后,可能会运行GUI应用程序。您可能必须更改X11 DISPLAY变量 - 尽管上面的链接没有讨论这个 - 因为AFAIR * nix系统使用的VNC单独桌面会话比当前登录的那个。

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

答案 2 :(得分:0)

如果您使用apt或apt-get安装PyQt5,现在也可以

  

sudo pip3 install pyqt5

答案 3 :(得分:-1)

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

答案 4 :(得分:-3)

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