到PyQt官網去下載最新版本
https://www.riverbankcomputing.com/software/pyqt/download5
根據提示我們首先應該安裝SIP,什么是SIP呢,百度一下,是用來調用c/c++模塊的,因為qt是用c++寫的,pyqt就是一個中間件,我們寫一句python代碼
告訴pyqt我要生成一個窗口,然后pyqt就去用到sip的東西去調用qt的c++窗口模塊,個人理解,不保證准確
說到這里我們的SIP已經下載下來了,文件sip-4.17.tar.gz
tar -xzvf sip-4.17.tar.gz
cd sip-4.17/
python3 configure.py 因為我們是要搭建的pyqt5,pyqt5需要python3.x 所以這個地方用python3 來執行配置文件 現在的ubuntu發行版默認都是自帶 python2.x和python3.x 兩個版本
如果這個步沒有錯誤的話 sudo make && sudo make install 就安裝好了
遇到錯誤一定要看錯誤描述,我到最后一步就出錯了 ,提示我stdio.h沒有找到,應該是沒有gcc編譯環境 解決辦法: sudo apt-get install build-essential
接着還會提示缺少 Python.h 解決辦法 : sudo apt-get install python3-dev
第一步完成 接着我們下載PyQt源文件:PyQt-gpl-5.5.1.tar.gz
tar -xzvf PyQt-gpl-5.5.1.tar.gz
cd PyQt-gpl-5.5.1/
python3 configure.py 配置這一步出現錯誤,
他默認去找qt4下面的qmake,下面他提示我說:“看樣子你用的python3” 試試自己指定qmake的路徑,好,根據他的提示我自己指定qmake的路徑
python3 configure.py --qmake=/usr/lib/x86_64-linux-gnu/qt5/ 寫到這個地方我就按tab補全路勁 結果使勁按下面根本就沒有qmake,
也就是說我們還沒有安裝qt,
解決辦法 : sudo apt-get install qt5-default
修正一下,如果按照上面一行安裝qt通常來說不是最新版本,我第一次就這么干的,安裝完我去看pyqt的庫發現少了很多,比官方介紹的要少很多庫,
qt官方文檔介紹QtWebEngine用來替代QtWebKit,但是我發現我的庫里面居然沒有QtWebEngine,再去看pyqt官方文檔,也列出了QtWebEngine庫,
還列出了很多我本地沒有的庫,正納悶兒,我在代碼里面偶然看到一個qt的版本函數QtCore.qVersion() ,然后我就輸出看了一下,結果我的版本是 qt5.2.1
我於是明白了什么,馬上去qt官網下載最新的5.5 ,
下載地址:http://www.qt.io/download-open-source/
首先映入眼簾的就是那個大大的 Download Now 按鈕,這個是在線安裝程序,下載下來后就是一個安裝器,我試了兩次,非常慢,基本上都是半路卡死
所以強烈建議下載離線版:紅框圈出來的地方,進去過后找到Linux 二進制包,繼續往下面滑動還有源碼包,推薦下載二進制包就可以了,方便些,
下載下來是:qt-opensource-linux-x64-5.5.1.run
添加執行權限: sudo chmod +x qt-opensource-linux-x64-5.5.1.run
運行:./qt-opensource-linux-x64-5.5.1.run
安裝過程中可以選擇qt的路徑,我安裝在 /opt/Qt5.5.1 下面
然后重新配置:
python3 configure.py --qmake=/opt/Qt5.5.1/5.5/gcc_64/bin/qmake
接下來配置就通過了,然后就是 sudo make && sudo make install
這一步根據電腦性能可能要等一會兒,我一步用了20多分鍾,要結束的時候又報錯了,no~
'qgeolocation.h' file not found
我去看了一下下載下來的PyQt文件里面 cd PyQt-gpl-5.5.1/QtPositioning/ && ls
發現沒有這個頭文件,這個模塊主要是用於定位的,手機上定位用的多,電腦上還是算了吧 然后回到上一步重新配置,直接忽略這個模塊
python3 configure.py --qmake=/opt/Qt5.5.1/5.5/gcc_64/bin/qmake --disable=QtPositioning
重新 sudo make && sudo make install 通過
OK,現在本地的庫和官方介紹保持一致了。
小測一下導入import PyQt5沒問題,但是提示:(注意:這一步錯誤你們因該遇不到,我因為之前裝了pyqt4才導致的問題)
the sip module implements API v11.0 but the PyQt5.QtCore module requires API v11.2
google了一番:
import sip ; print(sip, sip.SIP_VERSION_STR)
它輸出的居然是: ” /usr/lib/python3/dist-packages/sip.cpython-34m-x86_64-linux-gnu.so “ 4.1.5
看了一下stackoverflow 上的討論,提問者貼出來的是 ” /usr/lib/python3/dist-packages/sip.so “ 4.1.5
我進入目錄看一下,我里面也有一個sip.so庫, 然后我就試了一下把原來的 sip.cpython-34m-x86_64-linux-gnu.so 改了個名字
奇跡發生了有木有!!! 這次輸出 ” /usr/lib/python3/dist-packages/sip.so “ 4.1.7 了 真不容易。。
到此。PyQt5環境安裝結束,各種坑基本上都領略了一番。好簡單測試一下
1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 4 import sys 5 from PyQt5.QtWidgets import QApplication, QWidget 6 7 8 if __name__ == '__main__': 9 10 app = QApplication(sys.argv) 11 12 w = QWidget() 13 w.resize(250, 150) 14 w.move(300, 300) 15 w.setWindowTitle('Simple') 16 w.show() 17 18 sys.exit(app.exec_())
運行效果如下: