加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

在Ubuntu 14.04 64bit上安装python-pyqt5软件包(python 2.7)

(2017-01-07 14:51:59)
分类: linux

一、摘要

Python-pyqt5 软件包是做什么的,我在Ubuntu 14.04 64bit上该如何安装呢?
pyqt5 python的GUI开发包。也就是跨平台的图形化开发包
http://www.riverbankcomputing.com/software/pyqt/download5
下载安装即可。安装的过程很漫长,繁杂,特将踩坑过程记录出来。另外,这可能是目前为止网上最好的一篇pyqt5的安装笔记,比其它同类安装过程都简洁。

二、简介

PyQt是Qt库在Python的绑定版本,PyQt为我们Python程序员提供了使用完整Qt应用程序接口,几乎可以用Python做任何C++能做的事。作为一种编程语言,python相对于c++的优点是在编程效率上。
PyQt(Python的GUI模块)既成熟又稳定,并且有庞大用户的群体,我从用户那儿得到的两个最普通的反馈是它恰到好处和它很简单易用。
PyQt 5.4.2版本最新发布了,Qt 库的Python绑定。这个版本已经完美的支持 Qt v5.2.1了,包括最新新的组件QtBluetooth、QtPositioning、QtMacExtras、QtWinExtras 和 Qt11Extras 模板等。
PyQt5支持Python v2.6, v2.7 and v3.

配置PyQt5之前,必须首先安装SIP。

SIP是C/C++绑定生成器,是一个自动为C和C++库生成Python扩展模块的工具。为了方便开发PyQt,SIP于1998被“Riverbank Computing”公司创造出来。不过,SIP不专用于PyQt,而是适用于所有的C和C++库。
使用SIP时,程序员首先要编写一个特殊的".sip"文件,使用类似于C++的语法在其中描述扩展模块所提供的类型与函数。然后用SIP将这个文件转化为C++代码。最终编译,与C、C++库链接后就成为Python扩展模块。".sip"文件类似于C、C++的头文件。根据需要,需要程序员用SIP定义的语法添加一些C++代码中没有的信息。因为SIP不支持完整的C++语法,所以不能直接使用C++的头文件作为".sip"文件。

三、安装

1.安装QT库(含QT4和QT5)

sudo apt-get install qt-sdk

下载的软件包很大
如果自己编译QT库,那就需要手动修改路径
cd /usr/lib/x86_64-Linux-gnu/qt-default/qtchooser/
会有一个default.conf配置文件,可以修改默认配置文件为你编译好的QT库路径

http://img.blog.csdn.net/20150615074224244?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />

http://img.blog.csdn.net/20150615074243461?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />
2.安装SIP

从官网

http://www.riverbankcomputing.com/software/sip/download

下载最新稳定的tar.gz源码包,当前版本是sip-4.16.8.tar.gz,并解压

python configure.py
make
安装完成后,立即查看sip版本
sip -V 
http://img.blog.csdn.net/20150615072608661?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />

3.安装PyQt5

建议从官网

http://www.riverbankcomputing.com/software/pyqt/download5

下载源码包,不要从github上

https://github.com/baoboa/pyqt5

下载源码,因为编译有问题,参见遇到的问题4.

解压源码后,进入源码目录,运行

python configure.py --sip-incdir=/usr/include/python2.7

make -j4
sudo make install

编译过程很漫长,我的顶配ThinkPad T420温度飙到80+度,持续十多分钟。

http://img.blog.csdn.net/20150615072845533?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />

http://img.blog.csdn.net/20150615073743465?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />

http://img.blog.csdn.net/20150615073657270?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />


http://img.blog.csdn.net/20150615072714997?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />

四、安装中遇到的问题
问题1
qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory
http://img.blog.csdn.net/20150615074349745?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />
出错原因,没有安装qt4库,执行
sudo apt-get install qt-sdk
问题2
Error: Make sure you have a working sip on your PATH or use the --sip argument to explicitly specify a working sip.
http://img.blog.csdn.net/20150615073849173?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />
没有事先安装SIP,先去安装SIP吧
问题3
sipAPIQtCore.h:28:17: fatal error: sip.h: 没有那个文件或目录
http://img.blog.csdn.net/20150615072946715?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />
没有指定sip.h所在路径,configure时使用
python configure.py --sip-incdir=/usr/include/python2.7
参考链接
https://shenwang.blog.ustc.edu.cn/huhamhire-hosts/

问题4
qpyopengl_add_constants.o:在函数‘qpyopengl_add_constants(_object*)’中:
qpyopengl_add_constants.cpp:(.text+0x0): `qpyopengl_add_constants(_object*)'被多次定义
qpyopengl_add_constants.o:qpyopengl_add_constants.cpp:(.text+0x0):第一次在此定义
collect2: error: ld returned 1 exit status
make[1]: *** [libQtGui.so] 错误 1
make[1]:正在离开目录 `/home/taoyx/program_develop/pyqt5/QtGui'
http://img.blog.csdn.net/20150615072819980?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />
仔细研究发现该QtGui目录下有两个同名文件并且实现代码完全相同, 不同之处仅是:
qpyopengl_add_constants.cpp,使用defined(SIP_FEATURE_PyQt_OpenGL)控制
qpyopengl_add_constants.c 没有使用宏控制
问题应该是禁用该宏才不会导致该问题
将qpygui.pro中的qpyopengl_add_constants.c注释掉,发现行不通,还有其它几种做法,折腾了一阵,还是搞不定,放弃了。经过网上资料
说,github上的版本编译不过去,改为从官网下载就ok了

五、编写demo验证
先验证PyQt4和PyQt5模块是否能成功加载?
http://img.blog.csdn.net/20150617085540559?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGFvXzYyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center14.04 64bit上安装python-pyqt5软件包(python 2.7)" />
编写一个python脚本,然后使用python helloworld.py验证就可以了。
[python] view plain copy
  1. #!/usr/bin/env python  
  2. #encoding: utf-8  
  3.   
  4. import sys  
  5. from PyQt5 import QtCore, QtGui, QtWidgets  
  6.   
  7. if __name__ == '__main__' 
  8.     app QtWidgets.QApplication(sys.argv)  
  9.     QtWidgets.QWidget()  
  10.     w.resize(250150 
  11.     w.move(300300 
  12.     w.setWindowTitle('helloworld' 
  13.     w.show()  
  14.     sys.exit(app.exec_())  

运行效果截图

六、参考文献

[1].http://blog.csdn.net/idber/article/details/40076821   相当有价值,这个里面也有例子
[2].http://my.oschina.net/quanpower/blog/307140   后面的小demo验证相当有价值
[3].http://my.oschina.net/jlan/blog/402669               hello world示例


Error: PyQt5 requires Qt v5.0 or later

           


   I want to install PyQt5 on Ubuntu 14.04.2. Once downloaded and uncompressed, I run python configure.py as it is mentioned on the previous link. However, it asks me to install QT 5 or later. Which thing I did.

When I come back to run the command above, I get the same error:

begueradj@begueradj-hacker:~/Bureau/PyQt-gpl-5.4.1python configure.py 
Querying qmake about your Qt installation...
ErrorPyQt5 requires Qt v5.0 or later. You seem to be using v4.8.6Use the
--qmake flag to specify the correct version of qmake.
               


However, after Qt5 installation, when I run this: qmake --version                


I get this:  


QMake version 2.01a Using Qt version 4.8.6 in /usr/lib/x86_64-linux-gnu                

sudo apt-get install qt5-default,
               


Error: Make sure you have a working sip on your PATH or use the --sip argument to explicitly specify a working sip

begueradj@begueradj-hacker:~/Bureau/PyQt-gpl-5.4.1python configure.py 
Querying qmake about your Qt installation...
Determining the details of your Qt installation...
This is the GPL version of PyQt 5.4.1 (licensed under the GNU General Public
License) for Python 2.7.6 on linux2.

Type 'L' to view the license.
Type 'yes' to accept the terms of the license.
Type 'no' to decline the terms of the license.

Do you accept the terms of the license? yes
Found the license file pyqt-gpl.sip.
ErrorMake sure you have working sip on your PATH or use the --sip argument
to explicitly specify working sip.

           

1
2
3
4
5
6
7
8
9
10
11
you need to install sip first (not just configure it)
 
begueradj @begueradj :~/Bureau/sip-4.16.7 # python configure.py
begueradj @begueradj :~/Bureau/sip-4.16.7 # make
begueradj @begueradj :~/Bureau/sip-4.16.7 # make install
 
and next you can install PyQt :
 
begueradj @begueradj :~/Bureau/PyQt-gpl-5.4.1 # python configure-ng.py
 
begueradj @begueradj :~/Bureau/PyQt-gpl-5.4.1 # python configure-ng.py --sip /usr/bin/sip

In file included from greenlet.c:5:0:

greenlet.h:8:20: 致命错误: Python.h:没有那个文件或目录

编译中断。

error: Setup script exited with error: command 'gcc' failed with exit status 1

解决方法是安装python-dev,这是Python的头文件和静态库包:

sudo apt-get install python-dev

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有