簡述
原來在windows下實作的python code,因為業務需要,要将其放到Ubuntu(其實是Linux)下來進行開發和demo。是以安裝了目前最新的Ubuntu16.04 64bit系統,并搭建帶有GUI的python開發環境。
環境與工具選擇
最終确認選擇“Ubuntu16.04(64 bit)+ Python3.5 + Qt5.7.0 + SIP4.18.1 + PyQt5.7 + QScintilla2.9.2 + Eric6.0 ”
首先Ubuntu16.04是預設安裝了python2.7和python3.5的,是以python這部分就可以不需要安裝了。因為涉及GUI的開發,是以要準備pyqt的環境等東西。檢視系統python版本:
python
python3
python3.5
另外,需要安裝一個python子產品:
sudo apt-get install python3-dev
否則後面的SIP安裝會有找不到python.h的錯誤提示。
QT安裝
軟體安裝
可以從官網下載下傳,也可以從這裡下載下傳,我下載下傳了5.7.0的Linux 64bit版本,是一個.run檔案。
使用上面的兩行指令,進行安裝,此時會彈出安裝對話框:
然後按照提示一步步選擇即可:
安裝完成後,可以直接打開QT Creator:
軟體配置
我的Qt5.7.0安裝在/home/ethan下,這是在前面的安裝步驟時選擇的。而在/home/ethan/Qt5.7.0/5.7/gcc_64/bin/下有qmake。
安裝完成後用下面的指令配置一下PATH,在目前使用者主目錄下的.bashrc (or .zshrc)檔案中加入:
export QTDIR=/home/ethan/Qt5.7.0/5.7/gcc_64/
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${QTDIR}/lib
export PATH=${QTDIR}/bin:${PATH}
此時再在指令行中輸入qmake,看到如下:
說明配置成功了。
另外需要将/usr/lib/x86_64-linux-gnu/qt4/bin/qmake軟連接配接到/home/ethan/Qt5.7.0/5.7/gcc_64/bin/qmake上,否則後面在編譯安裝PyQt時可能會出問題:
sudo ln -s /home/ethan/Qt5.7.0/5.7/gcc_64/bin/qmake /usr/lib/x86_64-linux-gnu/qt4/bin/qmake
這裡最好把OpenGL的庫也安裝上,不然後面的GUI相關工具的安裝會有問題:
sudo apt-get install mesa-common-dev
sudo apt-get install libglu1-mesa-dev -y
SIP安裝
因為系統接口都是C, C++的而python要調用這些C/C++接口,就需要這個SIP,安裝PyQt之前必須先安裝對應版本的SIP。PyQt編譯時使用的SIP版本必須與python預設調用的SIP保持一緻!否則python中是無法調用PyQt的。QT安裝的是目前最新的QT5.7.0,這裡SIP最新版本也到了4.18.1,從SIP下載下傳這裡下載下傳SIP安裝檔案,sip-4.18.1.tar.gz。在下載下傳SIP之前,需要确認下自己的系統沒有預設安裝過其他版本,否則容易造成混亂。用
sip -V
可以看到系統的sip版本。不過我的系統并沒有SIP的。
下載下傳的sip-4.18.1.tar.gz是一個源碼包,需要在本地編譯後安裝:
4.18.1.tar.gz
cd sip-4.18.1
python3 configure.py
sudo make
sudo
然後需要核對下目前的SIP版本以及python3中使用的SIP的版本,看兩者是否一緻。核對目前SIP版本:
sip -V
會看到是4.18.1
然後指令行中輸入python3,打開python3.5環境,輸入:
>>> import sip
>>> print(sip.SIP_VERSION_STR)
也看到顯示是4.18.1的,這樣就說明SIP版本一緻了,安裝OK。
QScintilla安裝
QScintilla2是連接配接編譯器和Python的接口,是Eric的必需前置元件。QScintilla2 中需要單獨安裝3個子產品,本體,Designer和python bindings。這一步先隻安裝本體部分,後面兩個需要等安裝了PyQt5才能安裝,這個順序不能搞錯,不然會在安裝QScintilla的python bindings時會無法生成C++ code,導緻安裝的失敗。首先需要從QScintilla下載下傳這裡下載下傳源碼包。下載下傳完成後,對QScintilla_gpl-2.9.3.tar.gz進行解壓:
tar -xzvf QScintilla_gpl-2.9.3.tar.gz
cd QScintilla-gpl-2.9.3
安裝本體:
cd Qt4Qt5
qmake qscintilla.pro
sudo make
sudo
如果在上面的sudo make時,出現“/usr/bin/ld: cannot find -lGL”問題,可以用如下指令做個軟連接配接:
sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so
之後再去sudo make。
PyQT5安裝
PyQt是Python的一個跨平台圖形開發工具集,是Python與Qt的成功融合。PyQt包含了大約440個類、超過6000個的函數和方法。
首先從PyQt5下載下傳這裡下載下傳目前最新版本,PyQt5_gpl-5.7.tar.gz。使用如下指令編譯安裝:
tar -zxvf PyQt-gpl-5.7.tar.gz
cd PyQt-gpl-5.7
python3 configure.py
sudo make
sudo
然後使用python3指令進入python環境,輸入:
>>>import
此時沒有任何提示,說明安裝沒有問題,PyQt5 module import OK。
QScintilla安裝後續部分
前面已經安裝了本體Qt4Qt5部分了,這裡在安裝完PyQt5後,再繼續安裝後面的兩個部分。
安裝Designer
cd QScintilla-gpl-2.9.3/designer-Qt4Qt5
qmake designer.pro
sudo make
sudo
如果在sudo make時,遇到“fatal error: GL/gl.h: No such file or directory”的問題,這是由于系統中沒有安裝OpenGL庫所導緻。使用如下指令進行安裝OpenGL庫即可:
sudo apt-get install mesa-common-dev
sudo apt-get install libglu1-mesa-dev -y
安裝後再進行sudo make,就OK了。
安裝Python bindings
cd QScintilla-gpl-2.9.3/Python
python3 configure.py --pyqt=PyQt5
sudo make
sudo
這裡Python bindings安裝時需要指定 –pyqt=PyQt5參數,否則預設是為PyQt4安裝。或者直接修改其configure.py,将pyqt5_is_default = False改為pyqt5_is_default = True也可。
Eric6安裝
Eric是一款強大的開源Python IDE,支援Qt界面設計器的Eric在Python GUI開發中更是首屈一指,Python+PyQt+Eric已經成為一種标準的Python GUI開發平台。首先從Eric6下載下傳這裡下載下傳安裝包代碼–eric6-6.1.7.tar.gz。然後用如下指令解壓安裝:
tar -zxvf eric6-6.1.7.tar.gz
cd eric6-6.1.7
sudo python3 install.py
此過程會檢測之前安裝的各個軟體及其版本資訊,并且很快會安裝完成:
因為是通過sudo python3 install.py來安裝,在打開eric6時也要在前面加上sudo:
sudo
接下來打開eric6界面進行配置,主要是配置eric編輯器功能:
剛打開界面,就提示需要進行配置:
選擇Settings -> preference -> Editor -> Autocompation。勾選所有選框,打開代碼自動完成功能:
選擇Settings -> preference -> Editor -> QScintilla 。勾上左右的兩個選框,然後在下面source中,選擇from Document and API files:
選擇Settings -> preference -> Editor -> APIs。勾選Complie APIs Autocompation,在Language中,選擇python3。點面下面的Add from installed APIs按鈕,選擇住需要的.api檔案。最後點選Compile APIs:
選擇Settings -> preference -> Interface -> Interface。右側Language根據喜好選擇中文或者English,我這裡并沒有安裝中文語言包,是以使用預設的English。
接下來選擇自己的工程文檔将要放置的位置:
最後要重新開機eric才生效。
接下來用一個小的demo簡單驗證下python開發環境是否搭建OK。
建立一個demo1.py的python源代碼,demo code:
#!/usr/bin/env python
from PyQt5.QtWidgets import (QApplication, QLabel)
import sys
if __name__ == "__main__":
app = QApplication(sys.argv)
label = QLabel("<center>Hello World with PyQt5!</center>")
label.resize(200, 50)
label.show()
sys.exit(app.exec_())
然後在放置demo1.py路徑下,使用如下指令運作該demo:
python3 demo1.py
接下來看到運作效果如下: