2005年3月10日

[Windows] 建立 Windows 下的 Qt + Python + PyQt 的環境

如之前 ([PDA] Zaurus C760 新手筆記 (32) - python) 所說,想要寫些 python 的程式。用 google 找了一下,在 Zaurus 上,python 的 GUI solution 可能以 PyQt 的資源比較豐富。可是 Trolltech 在 Windows 上只有放出 Commercial License 的版本,如果也想要在 Windows 上實作 PyQt,這是一大麻煩。

不過有個 kde-cygwin 計劃,他們把 GPL license 的 Qt3 port 到 Windows 下,稱為 "Qt3/Windows Free Edition",關於版權的部份,他們是這麼說:
* Complete gpl licensed replacement for win32 environments
* based on the gpl'ed Qt/X11 sources means there is no licensing problems with any commercial trolltech license
底下我主要是依 Getting GPLed Qt/PyQt Running on WindowsQt 3/Windows Free Edition: MinGW Compiling instructions 的內容建立 Windows 下的 Qt + Python + PyQt 的環境。
  1. 安裝 MinGW:MinGW 是指 Minimalistic GNU for Windows,可以建立在 Windows 下的 GNU 編譯環境。

    只要下載並安裝 MinGW-3.2.0-rc-3.exe 即可。(預設安裝路徑是 C:\MinGW)

    在安裝完後,在 C:\MinGW\bin 下有個 mingwm10.dll,把它複製一份到 C:\Windows\system32 下。

  2. 安裝 Qt:先下載 Qt3 的程式碼:到 KDE-Cygwin snapshot area 下載程式碼後,把它解開到 C:\qt-3 下 (用 WinRar 即可解開 .tar.bz2 的檔案)。

    編譯 Qt3:開 cmd 視窗,執行下列的指令
    set QTDIR=C:\qt-3
    set MINGW=C:\MinGW
    set PATH=%QTDIR%\bin;%MINGW%\bin;%PATH%
    set QMAKESPEC=win32-g++
    cd C:\qt-3
    configure.bat -thread -gif -fast -verbose
    這會花蠻久的時間, 大概是要好幾個鐘頭,最好是找點事情做做,再回來看結果即可。

    如果有編譯成功,可以在 C:\qt-3\lib 下找到 qt-mt3.dll,把它複製一份到 C:\Windows\system32 下。

    也可到 C:\qt-3\bin 及 C:\qt-3\examples 目錄中,找到一些編譯成功的執行檔,試著執行看看。

  3. 安裝 Python:到 Download Standard Python Software,下載及安裝 Windows 版本的 Python。(預設安裝路徑是 C:\Python24)

    然後執行下列的指令,來得到相容於 MinGW 的 python 程式庫:
    cd C:\Python24\libs
    pexports C:\WINDOWS\system32\python24.dll > python24.def
    dlltool --dllname python24.dll --def python24.def --output-lib libpython24.a
    可以檢查一下,在 C:\Python24\libs 會多了一個 libpython24.a 檔。

  4. 安裝 SIP:依 SIP 的說明,它是 "a tool for automatically generating Python bindings for C and C++ libraries"。

    因為原來 Riverbank 所放出的版本是針對 Trolltech 的商業版本,所以要先 patch 一下,改下載這個 patch 過的版本。下載後把檔案解開,放到 C:\Python24\sip-4.1.1 下。並執行下列指令:
    cd C:\Python24\sip-4.1.1
    c:\Python24\python configure.py -p win32-g++ -l qt-mt
    mingw32-make.exe
    mingw32-make.exe install
  5. 安裝 QScintilla:若不想安裝 eric3,這個部份可略過。先下載 QScintilla,把它解開到 C:\Python24\qscintilla-1.62-gpl-1.5.1。並執行下列指令:
    cd C:\Python24\qscintilla-1.62-gpl-1.5.1\qt
    qmake qscintilla.pro
    mingw32-make.exe
    copy qextscintilla*.h %QTDIR%\include
    copy qscintilla*.qm %QTDIR%\translations
    如果編譯成功的話,在 C:\qt-3\lib 下會有 qscintilla.dll 檔,將它複製到 C:\Windows\system32 下。

  6. 安裝 PyQt:一樣是因為 Riverbank 所放出的版本是針對 Trolltech 的商業版本,所以要先 patch 一下,改下載這個 patch 過的版本。下載後把檔案解開,放到 C:\Python24\PyQt-x11-gpl-3.13 下。並執行下列指令:
    cd C:\Python24\PyQt-x11-gpl-3.13
    c:\Python24\python configure.py
    mingw32-make.exe
    mingw32-make.exe install
    PyQt 的編譯時間也很長,要有點耐心。在 C:\Python24\PyQt-x11-gpl-3.13\examples3 下有許多範例檔,可以試著執行看看。

  7. 安裝 eric3:eric3 是個用 python 編寫的 IDE 環境,除了 python 外,也支援許多的語言。先下載 eric3,把它解開到 C:\Python24\eric-3.6.2。並執行下列指令:
    cd C:\Python24\eric-3.6.2
    c:\Python24\python install.py
    然後就可以用 "C:\Python24\eric3.bat" 執行 eric3 了。

    不過,我在執行時,每次啟動到 "Setting up connections ..." 時,程式就會當掉。目前還在瞭解原因中。
註 1:在步驟 2. 中的環境變數 QTDIR/MINGW/PATH,在步驟 3. 到 6. 中都需要。
註 2:整個編譯的時間相當的久,要有點耐心。
註 3:我習慣把一些 dll 檔移到 C:\Windows\system32 下,免得 PATH 會愈加愈長。(如果只有一、兩個 dll 的話)
註 4:雖然目前 eric3 還無法正常執行,不過其它的 PyQt 程式都可正常執行無誤。

在編譯完後,大概耗費了超過 1G 的空間,不過應該有很多部份是可以清掉的。改天再來把它瘦身看看。
2005/03/11 補充:eric3 改用 eric-snapshot-20050309 版本,狀況有好一點,程式會在 UI 全部出來後才當掉。>"<


3 則留言:

匿名 提到...

Excellent!

不過 Trolltech Qt4/Win32 也是 GPL 發行了,PyQt4 也逐漸成熟,或許還可以更新本文 :-)

Unknown 提到...

您好~我想請問一下在
2.安裝Qt完成後,也的確出現exe的執行檔,
但為什麼我無法用命令提示字元再編輯岀執行檔....
謝謝您的回答~

mfhsieh 提到...

madoga你好,

那些 qt example 的執行檔可以正常執行嗎?

另外,我不懂 "無法用命令提示字元再編輯岀執行檔" 的意思?