搜尋此網誌

2017年3月27日 星期一

PyQt5 部署與編譯pyqtdeploy-環境安裝

此文章因為內容較長,將會拆成兩篇文章
1. 環境安裝
2. 程式設定
在這篇文章裡,要介紹的是如何讓寫好的Qt應用程式能夠讓其他人使用,
並且是在Client盡量不需要安裝其他環境的情況下。

簡單的方法可以參考 Python 使用 PyInstaller 打包程式
這個會自動抓取所有用到的動態函式庫,並且採用動態連結的方式執行。

在這篇我們要教另一個方法 pyqtdeploy
他會將Python 與 Qt的程式碼轉成C++的程式碼,採用靜態的方式編譯所有程式。好處在於除了執行速度之外,甚至可以編譯成 iOS 或 Android 的程式。

因此最重要的一點就是所有的程式都必須要有靜態的原始碼


目前操作環境
* Mac OS X
* Python 3.5
需要做的事情
環境安裝:
1. 安裝pyqtdeploy
2. 下載Qt、Python、sip、PyQt5的source code
3. 建立存放靜態程式碼的資料夾
4. 編譯下載的檔案(由pyqtdeploycli設定)
程式設定:
5. 開始製作 prc 檔案(由pyqtdeploy建立)
6. 製作qmake檔案
7. 最後程式的編譯
在過程中,可能會遇到非常多的錯誤,歡迎發問一起解決。

環境安裝

1 首先安裝pyqtdeploy
$ pip install pyqtdeploy
2 下載原始碼
QtPythonsipPyQt5
3 建立程式碼的資料夾
建立資料夾,並且將資料夾添加進環境變數1
$ cd ~
$ mkdir PyQtDeploy
$ export SYSROOT="YOUR HOME PATH/PyQtDeploy"
透過這項操作,我們將 SYSROOT 設定在 家目錄的PyQtDeploy
4 編譯所有原始碼
1. 編譯Qt
$ ./configure -prefix $SYSROOT/qt-X.Y.Z -static -release -nomake examples
$ make
$ make install
X.Y.Z 替換成你下載的Qt版本號碼
2. 編譯Python
$ pyqtdeploycli --package python --target TARGET configure
$ qmake SYSROOT=$SYSROOT
$ make
$ make install
TARGET2 換成要編譯的目標作業系統
可以利用pyqtdeploycli show-targets 查詢可使用的參數。
3. 編譯sip
$ pyqtdeploycli --package sip --target TARGET configure
$ python configure.py --static --sysroot=$SYSROOT --no-tools --use-qmake --configuration=sip-TARGET.cfg
$ qmake
$ make
$ make install
4. 編譯PyQt5
$ pyqtdeploycli --package pyqt5 --target TARGET configure
$ python configure.py --static --sysroot=$SYSROOT --no-tools --no-qsci-api --no-designer-plugin --no-qml-plugin --configuration=pyqt5-TARGET.cfg
$ make
$ make install

  1. 環境變數只是方便路徑的操作,不一定要新增,也可以改成其他自己想用的環境變數
  2. 如果是編譯在相同版本的作業系統,可以忽略 –target 的參數