---作者吴疆,未经允许,严禁转载,违权必究---
---欢迎指正,需要源码和文件可站内私信联系---
-----------点击此处链接至博客园原文-----------
功能说明:在ubuntu系统Python2.7下安装QT库、sip、PyQt5、qt-designer、pyuic等,搭建Python GUI编程环境
运行环境:ubuntu14.04、Python2.7、sip-4.16.8、PyQt-gpl-5.2.1、pycharm中qt5-designer和pyuic5,仅在以上环境中验证过本博客有效性
一、相关介绍
由于之前在windows7系统Python3.7下搭建过PyQt5环境(点击这里),相比于PyQt4,对PyQt5更为熟悉,因此,这次在ubuntu14.04系统Python2.7下也着手搭建PyQt5环境。然而,发现不是那么轻松,Python3中提供了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与查验版本截图:
(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(也有博客提出将PyQt5路径加入到PythonPath即可,但我照做却未成功,经验证此处注释不影响后续pycharm中配置pyuic5及其使用)
gedit Makefile #注释 -strip $(INSTALL_ROOT)/usr/bin/pyuic5
以上编译安装过程截图:
(4)在pycharm中配置qt5-designer和pyuic5
参考链接:ubuntu下pycharm中配置qt designer、linux安装qt5-designer并集成到pycharm、利用PyQt GUI显示图片、实时播放视频
各自作用:qt5-designer用于设计ui界面,产生相应.ui文件,pyuic5用于将qt5-designer产生的.ui文件转换为.py文件以供继承
安装qt5 tools,执行命令sudo apt-get install qttools5-dev-tools
pycharm中配置qt designer(pycharm中File--Settings---Tools---External Tools----+添加)
program中为qt5 designer路径:/usr/lib/x86_64-linux-gnu/qt5/bin/designer
working directory:$FileDir$ (注意与$ProjectFileDir$是有区别的,FileDir表示仅工作在.ui文件目录下,ProjectFileDir表示工作在大工程目录下,若.ui文件存在于大工程目录中的某个文件夹中,则会报错,解决方法是pycharm打开该文件夹,而非整个工程)
pycharm中配置pyuic(pycharm中File--Settings---Tools---External Tools----+添加)
program中为pyuic5的路径:/usr/bin/pyuic5
Arguments为解析命令的参数:-o $FileNameWithoutExtension$.py $FileName$(也可以在-o前加上-m PyQt5.uic.pyuic之类的,这样就可以不用在program中具体指定pyuic路径,具体可查参考博客,WithoutExtension表示生成.py文件不需要.ui的扩展名,即1.ui文件经过pyuic处理后生成1.py文件,而不是1.ui.py文件,另上述PyQt5编译阶段产生与pyuic5有关的报错不影响此处pycharm中pyuic5的配置)
working directory:$FileDir$
注意:上述相关参数可视情调整,具体可参考以上博客和自查有关博客
三、报错与解决
本人安装过程比较顺利,除以上提到的一个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&)'
根据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一样的简单,安装命令如下: