構建PyQt5.8/Python2.7

RiverBank不提供PyQt5在Python2.x中的預構建包裹。本文簡單敘述構建過程。

========================================================================================================================================================================================================================================================================================

1.如果你急用……

可在此處下載。如何使用這些文件,請參見本文的最後一節。

2.構建前準備工作

  • 安裝Python2.x(通常是最新版本的2.7.*)
  • 安裝Python的開發庫(Windows和macOS已經自帶,Linux按照對應發行版的軟體倉庫安裝)
  • 如果已經安裝了PyQt4,按這篇文章所述的方法將sip移動到PyQt4內部,以免sip衝突
  • 安裝開發環境。最新的Qt5.8需要Visual Studio 2013/2015(Windows)。在macOS上應該安裝最新的xcode和Command Line Development Tools,在其他Linux環境應該安裝相應的編譯器。
  • 安裝Qt5.8
  • 安裝其他必要的庫,例如Qt的多媒體組件在Linux下可能需要libpulse-dev

3.下載源文件

從這裡下載到以下源文件(Windows應該下載.zip,macOS/Linux應該下載.tar.gz)

  • sip-4.19.1.zip
  • PyQt5_gpl-5.8.zip
  • PyQt3D_gpl-5.8.zip
  • QScintilla_gpl-2.10.zip

創建一個工作目錄,把這些zip/tar包直接解壓縮到這個工作目錄里。這樣會形成4個子目錄。

最後,檢查一下命令行環境,看看編譯器(運行cl或者g++)和Qt是否能夠找到(運行qmake)

4.編譯sip

用以下命令編譯sip(在Windows/Visual Studio平台下,以下命令的make應用nmake代替)

$ cd sip-4.19.1n$ python configure.pyn$ maken

得到的sip可執行文件在sipgen中,sip的Python模塊(sip.pyd或sip.so)在siplib中。這時不要安裝sip。

5.編譯PyQt5

在Windows/Visual Studio平台下,用以下命令編譯PyQt5:

$ cd PyQt5_gpl-5.8n$ python configure.py --sip=..sip-4.19.1sipgensip.exe --sip-incdir=..sip-4.19.1siplib --disable=QtNfcn$ nmaken$ nmake installn

在macOS/Linux下的命令:

$ cd PyQt5_gpl-5.8n$ python configure.py --sip=../sip-4.19.1/sipgen/sip --sip-incdir=../sip-4.19.1/siplib --disable=QtNfcn$ maken$ sudo make installn

(QtNfc因為固有bug,忽略不使用)

在安裝的時候觀察PyQt5的安裝位置:

  • 在Windows下通常為 C:Python27Libsite-packagesPyQt5
  • 在Linux(Ubuntu)下通常為/usr/lib/python2.7/dist-packages/PyQt5
  • 在macOS下通常為 /Library/Frameworks/Python.framework/Versions/2.7/lib/site-packages/PyQt5

將以下文件和目錄複製到PyQt5的安裝位置:

  • Qt5的plugins目錄
  • siplib中的sip.pyd或sip.so

打開PyQt5的__init__.py,添加以下代碼:

import sysnimport osnpyqt5_path = os.path.realpath(os.path.dirname(__file__))nsys.path.append(pyqt5_path)nos.environ[QT_QPA_PLATFORM_PLUGIN_PATH] = pyqt5_path + /plugins/platformsnos.environ[QT_PLUGIN_PATH] = pyqt5_path + /pluginsn

可以試試運行examples目錄下的例子,看看有沒有問題。

6. 編譯PyQt3D

Windows/Visual Studio平台下,用以下命令編譯PyQt3D:

$ cd PyQt3D_gpl-5.8n$ python configure.py --sip=..sip-4.19.1sipgensip.exe --sip-incdir=..sip-4.19.1siplibn$ nmaken$ nmake installn

在macOS/Linux下的命令:

$ cd PyQt3D_gpl-5.8n$ python configure.py --sip=../sip-4.19.1/sipgen/sip --sip-incdir=../sip-4.19.1/siplibn$ maken$ sudo make installn

可以試運行examples下的例子。

7.編譯QScintilla2

首先編譯QScintilla2:

在Windows下的命令

$ cd QScintilla_gpl-2.10Qt4Qt5n$ qmaken$ nmake releasen$ nmake installn

在macOS/Linux下的命令:

$ cd QScintilla_gpl-2.10/Qt4Qt5n$ qmaken$ maken$ sudo make installn

然後編譯PyQt的QScintilla2:

在Windows下的命令

$ cd QScintilla_gpl-2.10Pythonn$ python configure.py --sip=....sip-4.19.1sipgensip.exe --sip-incdir=....sip-4.19.1siplib --pyqt-sipdir=....PyQt5_gpl-5.8sip --pyqt=PyQt5n$ nmake releasen$ nmake installn

在macOS/Linux下的命令:

$ cd QScintilla_gpl-2.10/Pythonn$ python configure.py --sip=../../sip-4.19.1/sipgen/sip --sip-incdir=../../sip-4.19.1/siplib --pyqt-sipdir=../../PyQt5_gpl-5.8/sip --pyqt=PyQt5n$ maken$ sudo make installn

寫一段代碼測試一下:

import sysnfrom PyQt5.QtCore import *nfrom PyQt5.QtGui import *nfrom PyQt5.QtWidgets import *nfrom PyQt5.Qsci import QsciScintilla, QsciLexerPythonnnnif __name__ == "__main__":n app = QApplication(sys.argv)n font = QFont()n font.setFamily(Courier)n font.setFixedPitch(True)n editor = QsciScintilla()n editor.setFont(font)n lexer = QsciLexerPython()n lexer.setFont(font)n editor.setLexer(lexer)n editor.show()n editor.setText(open(sys.argv[0]).read())n app.exec_()n

8 發布

對於Windows而言,先把Qt5的bin目錄下所有.dll(除Qt5Gamepad.dll外的*d.dll可以不複製)以及Visual C++運行庫(對於Visual Studio 2013而言,是msvcr120.dll和msvcp120.dll)複製到PyQt5目錄下,然後把PyQt5目錄壓縮一下,就能裝到其他電腦的Python中了。此外還有三個工具.bat位於Python的安裝目錄之下,分別為 pylupdate5.bat、pyrcc5.bat和pyuic5.bat。這些.bat放在任意位置都是可以運行的,一併拷走。

對於macOS而言,要先把Qt5的lib目錄複製到PyQt5中,接著壓縮PyQt5這個目錄,然後在其他電腦上手工複製即可。pylupdate5、pyrcc5和pyuic5的位置在/Library/Frameworks/Python.framework/Versions/2.7/bin/中,這三個文件是獨立的腳本,也是放在任意位置均可運行。在其他電腦運行PyQt5腳本之前,需要執行以下環境變數的設置:

export DYLD_FRAMEWORK_PATH=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt5/lib/nexport DYLD_LIBRARY_PATH=/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt5/lib/n

對於Linux而言,以Ubuntu為例,要先把Qt5的lib目錄下所有lib***.so複製到PyQt5中,接著壓縮PyQt5這個目錄,然後在其他電腦上手工複製即可。npylupdate5、pyrcc5和pyuic5的位置在/usr/bin/中,這三個文件是獨立的腳本,也是放在任意位置均可運行。在其他電腦運行PyQt5腳本之前,需要執行以下環境變數的設置:

export LD_LIBRARY_PATH=/usr/lib/python2.7/dist-packages/PyQt5n

如果對方需要,還可以帶上所有的examples加以驗證。


推薦閱讀:

Kivy中文編程指南:事件和屬性
分享一個簡單的多進程小爬蟲
第一章 | 使用python機器學習
Python數據分析及可視化實例之Flask Web開發
lasagne,keras,pylearn2,nolearn深度學習庫,到底哪家強?

TAG:QtC开发框架 | Python | Python开发 |