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

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

-----------点击此处链接至博客园原文-----------

功能说明:在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

以上编译安装过程截图:

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

(4)在pycharm中配置qt5-designer和pyuic5

参考链接:ubuntu下pycharm中配置qt designerlinux安装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一样的简单,安装命令如下:

linux下Python2.7编译安装PyQt5的更多相关文章

  1. Linux下指定版本编译安装LAMP

    说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...

  2. Linux下源码编译安装rpy2

    R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现工具.rpy2是Python直接调用R的第三方库,它可以实现使用python读取R的对象.调用R的方法以及Python与R数据结构转换等.这 ...

  3. Linux 下源码编译安装 vim 8.1

    前言 目前 linux 的各个发行版基本上都是带了一个 vi 编辑器的,而本文要说的 vim 编辑器对 vi 做了一些优化升级,更好用.当我们需要远程操作一台 linux 服务器的时候,只能使用命令行 ...

  4. 1、Linux下源码编译安装PostgreSQL

    操作系统:Centos7 说明:postgresql必须在postgres用户下初始化数据库和启动,否则报错. PostgreSQL的特性 PostgreSQL是一种几乎可以运行在各种平台上的免费的开 ...

  5. linux下源码编译安装mysql

    1.安装依赖的包: yum install -y gdb cmake ncurses-devel bison bison-devel 2.创建mysql安装目录和数据文件目录 mkdir -p /us ...

  6. 在Linux下源码编译安装GreatSQL/MySQL

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 本 ...

  7. 在 Linux 下用 CMAKE 编译安装 OpenCV 3.2.0

    [安装相关软件和库] 1.安装CMAKE:这里使用apt-get来安装; CMAKE 是一个跨平台编译工具,能够输出各种makefile,和project 文件,指导编译器编译,对CMAKE具体的可以 ...

  8. Linux下源码编译安装MySql,centeros7

    1. 安cmake工具 # yum install -y cmake 2. 创建mysql用户  #useradd -s /sbin/nologin mysql  //设置为非登陆用户(安全) 3. ...

  9. linux下rocksdb的编译安装

    RocksDB起源于Facebook的实验室项目,实现了一个高性能的快速存储器,是基于C++编写的key value数据库,很多软件都是采用内置rocksdb的方式运行,所以需要我们提前安装rocks ...

随机推荐

  1. 个人JS体系完善(一)

    个人JS体系整理(一) 一. 原型 JS每声明一个Function,都有Prototype原型,Prototype原型是函数的一个默认属性,在函数的创建过程中由JS编译器自动添加,也就是说每当生产一个 ...

  2. 抽象类(abstract class)和接口(Interface)的区别

    前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力. 二者具有很大的相似性,甚至可以相互替换,因 ...

  3. [Swift实际操作]九、完整实例-(6)创建App欢迎界面

    本文创建一个位于导航控制器之内的欢迎页面,该页面主要用来向用户简要介绍产品的功能.以及提供主要功能的入口. 首先选择自定义视图文件夹[CustomViews],需要在该文件夹下,导入一款第三方类库.该 ...

  4. MobaXterm替换cmder

    Windows上命令行工具cmder确实很好用,其扩展功能呢,比系统自带强大几倍.后来在使用MobaXterm,官网https://mobaxterm.mobatek.net/免费版本功能足够强大,支 ...

  5. 提交表单存在html标签报错-检测到有潜在危险的 Request.Form 值

    1..aspx页面 在.aspx文件头中加入这句<%@ Page validateRequest="false" %> 2.通用方法 修改web.config文件, & ...

  6. Fxx and game hdu 5945 单调队列dp

    dfs你怕是要爆炸 考虑dp; 很容易想到 dp[ i ] 表示到 i 时的最少转移步数: 那么: dp[ i ]= min( dp[ i ],dp[ i-j ]+1 ); 其中 i-t<=j& ...

  7. Codeforce-A-Two distinct points(暴力)

    output standard output You are given two segments [l1;r1][l1;r1] and [l2;r2][l2;r2] on the xx-axis. ...

  8. hdu1865 1sting (递归+大数加法)

    1sting Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  9. linux 远程装机

    首先,服务器配置dhcp  关闭火墙yum install dhcp -ycd   /etc/dhcpcp   /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example ...

  10. Go语言基础之4--流程控制

    一.if else语句 1.1 基本语法1 语法1: if condition { //do something } 语法2: if condition { //do something } else ...