---作者吴疆,未经允许,严禁转载,维权必究---

---欢迎指正,需要源码和文件可站内私信联系---

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

功能说明:在ubuntu系统Python2.7下安装QT库、sip、PyQt5、qt-designer、pyuic等,搭建Python GUI编程环境

运行环境:ubuntu14.04、Python2.7、sip-4.16.8、PyQt-gpl-5.2.1、qt4-designer、pyuic4,仅在以上环境中验证过本博客有效性

 

一、相关介绍

由于之前在windows7系统Python3.7下搭建过PyQt5环境(点击这里),相比于PyQt4,对PyQt5更为熟悉,因此,这次在ubuntu14.04系统Python2.7下也着手搭建PyQt5环境。然而,发现不是那么轻松,Python3中提供了PyQt5包,直接pip安装即可,而Python2若想安装PyQt5必须利用源码编译安装,且在编译安装PyQt5需安装相关QT库、sip等,而qt-designer和pyuic的作用在这篇博客中已经提及。

二、环境搭建

参考链接:在ubuntu14.04 64bit上安装python-pyqt5软件包(Python2.7)(极重要参考,强烈建议阅读)、sip-4.16.8下载PyQt-gpl-5.2.1下载配置PyQt5环境for Python3.4

(1)安装QT库,相比于自己编译QT库,执行以下命令进行安装比较简单

sudo apt-get install qt-sdk

(2)安装sip-4.16.8

sip是Python调用C/C++库的必备模块,类似于swig,sip作为PyQt的依赖工具,安装PyQt之前必须先安装对应版本的sip,同时,PyQt编译时使用的sip版本必须与Python默认调用的sip保持一致,否则Python中无法调用PyQt。ubuntu14.04中一般自带安装sip-4.15.5,终端输入sip -V命令查看已安装的sip版本,若为其他版本,查看/usr/lib/python2.7/dist-packages/目录下是否存在sip相关文件,将其删除,执行删除命令:

#若存在sip相关目录,还需执行第1条删除命令,否则只执行第2条命令
sudo rm -rf /usr/lib/python2.7/dist-packages/sip目录名
sudo rm /usr/lib/python2.7/dist-packages/sip* 

 根据提供的参考链接下载sip-4.16.8.tar.gz,拷贝至工程目录下(本文为/home/rcnn/HK_Double_Camera)执行以下命令:

tar -xzvf sip-4.16.8.tar.gz
cd sip-4.16.8
python configure.py
make
sudo make install

安装完成后,可分别在终端和Python中查验sip版本是否一致

#终端查看sip版本
sip -V
#查看Python调用的sip版本(通过上述编译安装操作得到的)
python
import sip
print(SIP_VERSION_STR)

如不一致,需要重新执行上述删除、编译安装过程,版本不一致意味着后面编译PyQt所使用的sip和Python2.7调用的sip不一致,导致在Python2.7中调用PyQt的相关模块出现如下类似错误:

the sip module implements API v11.0 but the PyQt5.QtCore module requires API v11.1 

make install与查验版本截图:

linux下Python2.7编译安装PyQt5 随笔 第1张

linux下Python2.7编译安装PyQt5 随笔 第2张

(3)PyQt5编译安装

根据提供的参考链接下载PyQt-gpl-5.2.1.tar.gz,拷贝至工程目录下(本文为/home/rcnn/HK_Double_Camera)执行以下命令:

tar -xzvf PyQt-gpl-5.2.1.tar.gz
cd PyQt-gpl-5.2.1
python configure.py --sip-incdir=/usr/include/python2.7
make -j4
sudo make install

执行make时,若报错strip:/usr/bin/pyuic5:不可识别的文件格式,则利用gedit打开Makefile文件,注释该句后重新sudo make install

linux下Python2.7编译安装PyQt5 随笔 第3张

gedit Makefile
#注释 -strip $(INSTALL_ROOT)/usr/bin/pyuic5

linux下Python2.7编译安装PyQt5 随笔 第4张

以上编译安装过程截图:

linux下Python2.7编译安装PyQt5 随笔 第5张

linux下Python2.7编译安装PyQt5 随笔 第6张

linux下Python2.7编译安装PyQt5 随笔 第7张

验证PyQt5是否安装成功,可戳例子1例子2

(4)安装qt4-designer

参考链接:PyQt5和qt-designer结合

qt4-designer用于设计ui界面,产生相应.ui文件

xxxxxxx待填坑

 

 

(5)安装pyuic4

参考链接:PyQt5和qt-designer结合

pyuic4用于将qt4-designer产生的.ui文件转换为.py文件以供调用

xxxxxxx待填坑

 

 

三、报错与解决

本人安装过程比较顺利,除以上提到的一个error外,只遇到一个因版本问题引起的大坑:按照上文参考博客安装了sip官网(https://riverbankcomputing.com/software/sip/download)最新的sip-4.19.15.tar.gz和PyQt官网(https://riverbankcomputing.com/software/pyqt/download5)最新的PyQt5_gpl-5.12.1.tar.gz,在查看了Readme相关说明,发现满足版本要求,但依然会在PyQt5编译阶段报错:

make[1]:*** [sipQtCoreQLoggingCategory.o] 错误 1

make[1]:正在离开目录  ‘/home/rcnn/HK_Double_Camera/PyQt5_gpl-5.12.1/QtCore’

make:*** [sub-QCore-make_first-ordered] 错误2

error: const class QLoggingCategory has no member named 'isInfoEnabled'

error: no matching function for call to 'QLoggingCategory::QLoggingCategory(const char*&, QtMsgType&)' 

linux下Python2.7编译安装PyQt5 随笔 第8张

linux下Python2.7编译安装PyQt5 随笔 第9张

linux下Python2.7编译安装PyQt5 随笔 第10张

根据error信息,发现1个错误是因为未定义isInfoEnabled()函数引起,另1个错误是因为本该接收1个参数输入,但接收了2个,对相应.cpp文件注释/修改后make将不再报错,但最终却不能生成PyQt5的相关模块,具体原因不明,待填坑,暂时解决办法为卸载重装上文版本。由于官网不再提供老版本的sip和PyQt5,搜了很久在SourceForge.net找到了。

四、其他

(1)SourceForge.net

摘自百度百科:SourceForge.net,又称SF.net,是开源软件开发者进行开发管理的集中式场所。SourceForge.net由VA Software提供主机,并运行SourceForge软件。大量开源项目在此落户(截至2009年2月,超过23万的软件项目已经登记使用超过200万注册用户的服务,使SourceForge.net开放源码的工具和网络应用的最大集合),包括维基百科使用的MediaWiki,但也包含很多停止开发和一人开发的项目。SourceForge 是全球最大开源软件开发平台和仓库,网站建立的宗旨,就是为开源软件提供一个存储、协作和发布的平台。SourceForge 上拥有大量非常优秀的开源软件,事实上,这些软件完全可以代替一些商业软件。

(2)PyQt4安装

参考链接:ubuntu安装PyQt4

实践过程中,PyQt5安装了很久没成功,一度懊恼,便尝试安装PyQt4,想着把基于PyQt5的代码改成PyQt4的应该也可行。因此参考了上述博客安装PyQt4的过程,由于有包,利用apt-get或pip安装十分方便,就像python3安装PyQt5一样的简单,安装命令如下:

linux下Python2.7编译安装PyQt5 随笔 第11张

 

 

------------------------------------------写作不易,欢迎打赏-------------------------------------

linux下Python2.7编译安装PyQt5 随笔 第12张      linux下Python2.7编译安装PyQt5 随笔 第13张

                (支付宝扫码)                                            (微信扫码)

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄