在Ubuntu 14.04 64bit上安装python-pyqt5软件包(python 2.7)
一、摘要
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.pymake 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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《ActionScript 3.0权威指
- 下一篇: 在Ubuntu 14.04 64bit上