2014-08-31 44 views
7

我正在移植一個使用PyQt5從Linux到Windows的Python 2應用程序。如何在Windows 2上爲Python 2安裝PyQt5?

問題:如何在Windows上安裝PyQt5?

我曾嘗試:

  1. pip install PyQt5失敗:

    Downloading/unpacking PyQt5 
        Could not find any downloads that satisfy the requirement PyQt5 
    Cleaning up... 
    No distributions at all found for PyQt5 
    Storing debug log for failure in C:\Users\user\pip\pip.log 
    
  2. 尋找一個Windows Installer on the official website,但有隻提供PyQt4的安裝程序的Python 2.

我該怎麼辦?

回答

13

這是一個非常古老的問題,但是如果我在一個星期前遇到這個問題並給出正確的答案,我會發現它非常有用。這是我做了什麼來達到預期的結果。正如您所指出的,PyQt5和Python 2.7不支持軟件包,因此您必須自己構建它。謝天謝地,這個過程非常簡單。假設你已經安裝了Python 2.7。

  1. 您將需要MS Visual C++的有效安裝。我有專業版本,但我認爲社區版本也可以。
  2. 你將需要有一個適當的版本的QT。如果您使用的是32位Python,請確保您獲得32位Qt。另外,(儘管我認爲它應該不重要),但我確保獲得使用與我具有的相同版本的MSVC編譯器構建的Qt版本。如果Qt安裝和PyQt之間有任何靜態鏈接(這可能導致鏈接目標文件的二進制不兼容),那麼這可能很重要。請注意,Qt對許可有額外的考慮,所以您可能想要先看看https://www.qt.io/download/
  3. 請確保您的Qt安裝的bin子目錄位於您的系統路徑中。
  4. 獲取SIP的源代碼。 SIP可從riverbankcomputing.com獲得。我使用的是4.18版本。
  5. 有三個命令來構建和安裝SIP。不要從標準shell運行這些命令,而是使用Visual Studio工具命令shell,以便您的路徑包含編譯器,並且還要設置INCLUDE,LIBS和LIBPATH環境變量。

    python configure.py

    如果您使用的是虛擬環境的Python,你可能需要修改的makefile SIPLib因爲在Python中的位置,它硬編碼的依賴性包括子目錄和庫子目錄。我選擇了在系統的Python指向它們安裝(C:\ Python27 \ include和C:\ Python27 \庫。)現在應該是越簡單

    nmake

    nmake install

    最後一部分這一步驟是檢查sip.exe程序是否已經放置在路徑中的一個位置(如果您使用虛擬Python環境,這可能只是一個問題,我將該程序複製到腳本目錄中。)

  6. 獲取與之前獲得的Qt版本對應的PyQt版本的源代碼。它可以從Sourceforge上的PyQt項目獲得,最新版本可以從riverbankcomputing.com獲得。

  7. 重複同樣的過程:

    python configure.py

    nmake

    nmake install

    您用來建立SIP。在這種情況下,生成的生成文件數量太大(所有可能的位置都是python27.lib文件和頭文件的錯誤位置,具體取決於您的虛擬環境)。我只是將python27.lib文件複製到位置makefiles期望。同樣,有三個應用程序安裝在不屬於系統路徑的位置(pyuic5,pyrcc5和pylupdate5),我也將它們複製到路徑中的某個位置。

完成。你應該能夠構建你的PyQt5/Python2.7應用程序。

+0

非常有幫助!警告:使用64位Python 2.7,Qt/PyQt 5.7.1,sip 4.19,MSVC 2015社區,我必須爲PyQt5使用「python configure.py --disable = QtNfc」,否則構建會失敗。同樣的事情發生在其他人身上:https://www.riverbankcomputing.com/pipermail/pyqt/20​​15-August/036222.html – pixelbrei 2017-02-10 17:47:33

+0

第6點是錯誤的:PyQt5不與Qt5同步版本。 – ekhumoro 2017-02-14 00:28:34

+0

一年太晚了,但我將它標記爲已接受的B/C我無法再訪問Windows了:) – 2017-08-11 15:51:24