一、摘要

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库路径


2.安装SIP

从官网

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

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

python configure.py
make
sudo make install

安装完成后,立即查看sip版本
sip -V 

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+度,持续十多分钟。

四、安装中遇到的问题
问题1
qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory

出错原因,没有安装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.
没有事先安装SIP,先去安装SIP吧
问题3
sipAPIQtCore.h:28:17: fatal error: sip.h: 没有那个文件或目录

没有指定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'

仔细研究发现该QtGui目录下有两个同名文件并且实现代码完全相同, 不同之处仅是:
qpyopengl_add_constants.cpp,使用defined(SIP_FEATURE_PyQt_OpenGL)控制
qpyopengl_add_constants.c 没有使用宏控制
问题应该是禁用该宏才不会导致该问题

将qpygui.pro中的qpyopengl_add_constants.c注释掉,发现行不通,还有其它几种做法,折腾了一阵,还是搞不定,放弃了。经过网上资料
http://my.oschina.net/u/2306127/blog/370834
说,github上的版本编译不过去,改为从官网下载就ok了
五、编写demo验证
先验证PyQt4和PyQt5模块是否能成功加载?

编写一个python脚本,然后使用python helloworld.py验证就可以了。

#!/usr/bin/env python
#encoding: utf-8import sys
from PyQt5 import QtCore, QtGui, QtWidgetsif __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)w = QtWidgets.QWidget()w.resize(250, 150)w.move(300, 300)w.setWindowTitle('helloworld')w.show()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示例

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

  1. 在Ubuntu 14.04 64bit上安装Markdown编辑器Remarkble

    目前Markdown已经是非常流行和高效的文档整理和书写工具语言, 我以前接触过, 但是一直没有坚持下来, 这次五一假期期间我强迫自己去熟悉它的语法格式和编辑器, 原来我在Ubuntu 14.04 6 ...

  2. 在Ubuntu 14.04 64bit上安装Markdown和绘图软件Haroopad

    简介 Haroopad:一款让你欲罢不能的Markdown编辑器 身为大程序员,我本来是不需要 Markdown 编辑器的,但是 Haroopad 让我简直欲罢不能,不能再爱更多.跨平台,代码高亮,V ...

  3. 在Ubuntu 14.04 64bit上安装numpy和matplotlib库

    机器学习是数据挖掘的一种实现形式,在学习<机器学习实战>过程中,需要python环境中安装好numpy和matplotlib库,特此将我在Ubuntu 14.04 64bit上的摸索过程总 ...

  4. 在Ubuntu 14.04 64bit上安装StarUML 2.5版本

    StarUML是来自韩国的一个优秀的UML绘图软件, 原来是免费软件, 现在需要付费购买.当然免费使用功能会有诸多限制. 它支持Windows, Linux和Mac OS等平台. 下面是我在Ubunt ...

  5. 在Ubuntu 14.04 64bit上安装百度云Linux客户端BCloud

    百度云是一个不错的网盘,Bcloud 是一个 Linux 下超赞的客户端, 官网 github: https://github.com/LiuLang/bcloud-packages 和kwplaye ...

  6. 在ubuntu 14.04 64bit上安装酷我音乐盒Linux客户端kwplayer

    kwplayer 是linux桌面下的轻量级的音乐播放软件, 由LiuLang同学开发, 使用的是Python3+gtk3, 开源的(GPLv3). 它的主要特点有: • 使用了kuwo.cn(酷我音 ...

  7. 酷我音乐for linux,在ubuntu 14.04 64bit上安装酷我音乐盒Linux客户端kwplayer

    kwplayer是linux桌面下的轻量级的音乐播放软件, 由LiuLang同学开发, 使用的是Python3+gtk3, 开源的(GPLv3). 它的主要特点有: 使用了kuwo.cn(酷我音乐盒) ...

  8. 在ubuntu 14.04 64bit上安装酷我音乐盒Linux客户端

    kwplayer是linux桌面下的轻量级的音乐播放软件, 由LiuLang同学开发, 使用的是Python3+gtk3, 开源的(GPLv3). 它的主要特点有: 使用了kuwo.cn(酷我音乐盒) ...

  9. 在Ubuntu 14.04 64bit上安装CHM阅读器KchmViewer 5.3

    kchmviewer是一款不错的开源软件,你可以使用它在linux系统下阅读chm格式的电子书.KchmViewer 作为一款使用Qt开发的程序,与KDE 桌面环境整合得很好.从语言兼容性上看,Kch ...

最新文章

  1. 运行在CentOS7.5上的Django项目时间不正确问题
  2. jetson nano 用 tensorrt 运行 nanodet(kitti数据集)
  3. (原创)JAVA注解应用——实现属性的自动检测
  4. 【ffmpeg for wince】音视频编解码多平台移植(for window/wince)
  5. python cursor游标_第二十三天 python中游标的使用
  6. PyTorch更新了:支持Windows,新增零维张量
  7. 832计算机专业基础,2019年考试科目832计算机组成原理与数据结构.doc
  8. (day 17 - 快排)剑指 Offer 40. 最小的k个数
  9. html5游戏作弊码,HTML5新手必备的入门指南秘籍
  10. MQL5语法基础(三)
  11. Error:java.lang.RuntimeException: Some file crunching failed, see logs for detail
  12. FBReader工程结构解析
  13. 东南大学计算机考研专业课科目,东南大学计算机技术(专业学位)研究生考试科目和考研参考书目...
  14. 熊猫直播P2P分享率优化(上):IP组网
  15. python中map函数返回值类型_Python学习第42课-map()函数
  16. 我的世界1.12.2java下载_我的世界:Minecraft Java版 1.12.2-pre1发布
  17. 2017面向对象程序设计(Java)第十七周助教工作总结
  18. LivePlayer.js播放器遇到悬停英文提示如何切换显示成中文
  19. 量子计算成区块链的达摩克利斯之剑,Hcash却选择装剑入鞘
  20. 【Golang】Golang语言编程规范

热门文章

  1. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...
  2. PyCharm中Directory与Python package的区别
  3. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...
  4. bootstrap:按钮,下拉菜单
  5. 一些可能没用过的调试窗口
  6. UVa 10051 Tower of Cubes(类似LIS)
  7. UVa 10112 - Myacm Triangles
  8. HDU-1698-Just a Hook
  9. 计算机电缆线对成缆系数,计算机电缆绞合系数 - 无图版
  10. python拆分excel的sheet为单文件_python拆分Excel表格并发送邮件