linux下Python2.7編譯安裝PyQt5

---做者吳疆,未經容許,嚴禁轉載,違權必究---html

---歡迎指正,須要源碼和文件可站內私信聯繫---python

-----------點擊此處連接至博客園原文-----------linux

 

功能說明:在ubuntu系統Python2.7下安裝QT庫、sip、PyQt五、qt-designer、pyuic等,搭建Python GUI編程環境編程

運行環境:ubuntu14.0四、Python2.七、sip-4.16.八、PyQt-gpl-5.2.一、pycharm中qt5-designer和pyuic5,僅在以上環境中驗證過本博客有效性ubuntu

 

1、相關介紹windows

因爲以前在windows7系統Python3.7下搭建過PyQt5環境(點擊這裏),相比於PyQt4,對PyQt5更爲熟悉,所以,此次在ubuntu14.04系統Python2.7下也着手搭建PyQt5環境。然而,發現不是那麼輕鬆,Python3中提供了PyQt5包(python3-pyqt5),直接pip安裝便可,而Python2若想安裝PyQt5必須利用源碼編譯安裝,且在編譯安裝PyQt5需安裝相關QT庫、sip等,此外,qt-designer和pyuic的做用在這篇博客中已經說起。網絡

2、環境搭建python2.7

參考連接:在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$  

注意:上述相關參數可視情調整,具體可參考以上博客和自查有關博客

3、報錯與解決

本人安裝過程比較順利,除以上提到的一個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找到了。

4、其餘

(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同樣的簡單,安裝命令以下:

相關文章
相關標籤/搜索