Posted on 2020-01-14 20:48
eryar 閱讀(2921)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
1.PipeCAD
編譯PySide
PySide是跨平臺(tái)應(yīng)用程序框架Qt的Python綁定版本。在2009年8月,PySide首次發(fā)布。提供和PyQt類(lèi)似的功能,并相容 API。但與 PyQt 不同處為使用LGPL授權(quán)。
PySide的推出比pyQt晚很多,但也有些年頭了。由于先前PySide項(xiàng)目不是很完善,又缺乏文檔,所以其存在感不高。Pyside的誕生主要是Nokia(收購(gòu)了Trolltech的Nokia當(dāng)時(shí)是Qt的爸爸)與Riverbank Computing談崩了的結(jié)果。Riverbank Computing是pyQt的開(kāi)發(fā)商,對(duì)pyQt采用GPLv3協(xié)議。Nokia主動(dòng)與Riverbank Computing展開(kāi)了多輪協(xié)商,表示希望pyQt能添加對(duì)LGPL協(xié)議的支持,這樣對(duì)于很多商業(yè)用戶(hù)會(huì)更友好,何況你在pyQt里使用的也是我們LGPL協(xié)議版本的Qt,這個(gè)要求不過(guò)分吧。Riverbank Computing說(shuō)我覺(jué)得不行。大概是覺(jué)得Riverbank Computing吃相難看,Nokia一氣之下決定單干,于2009年8月發(fā)布了支持了LGPL協(xié)議的PySide,pyQt的對(duì)標(biāo)產(chǎn)品。然鵝,就算你是親生的,剛生下來(lái)也打不過(guò)一個(gè)壯小伙子,何況你馬上就要被過(guò)繼出去了。。(滑稽2011年,Nokia將Qt的商業(yè)許可賣(mài)給Digia。2012年,Nokia將Qt完全賣(mài)給Digia,后者在2012年年底推出了Qt5。遭遇人生的重大變故,PySide項(xiàng)目未來(lái)如何發(fā)展還是個(gè)未知數(shù),更不要說(shuō)支持Qt5了。反觀pyQt,在Qt5推出的半年內(nèi)(2013年6月)就發(fā)布了支持Qt5的pyQt5。一邊是生死未卜的只支持Qt4還不完善的主要依靠社區(qū)維護(hù)的PySide,一邊是全面支持Qt4/Qt5的文檔健全的pyQt,強(qiáng)弱懸殊,高下立判。好在Digia收購(gòu)了Qt后,決定大力度支持Qt全方位發(fā)展,并于2014年9月將Qt分拆成一家獨(dú)立全資子公司The Qt Company,后者于2016年在納茲達(dá)克赫爾辛基上市。PySide對(duì)Qt5提供支持的計(jì)劃也從2014年開(kāi)始籌備,也就是2015年上馬的Qt for Python項(xiàng)目,該項(xiàng)目開(kāi)發(fā)的模塊命名為PySide2,以表示與老一代PySide的不同。雖說(shuō)加大了投入,該補(bǔ)的課也繞不開(kāi),PySide2在Qt公司和Qt社區(qū)開(kāi)發(fā)者的共同努力下,也只在2018年6月才正式發(fā)布了第一個(gè)版本,穩(wěn)定性還是個(gè)問(wèn)題。不過(guò)從0到1是最難的,后面就容易了,尤其最近發(fā)布的Qt 5.12 LTS釋放了非常積極的信號(hào),PySide2已經(jīng)日趨完善,又是親生的,還有LGPL開(kāi)源協(xié)議的加持,今后PySide2有足夠的理由成為Python開(kāi)發(fā)者使用Qt的第一選擇。(來(lái)自:https://www.zhihu.com/question/306793447)
有了編譯開(kāi)源庫(kù)OpenCASCADE等的經(jīng)驗(yàn),這些開(kāi)源庫(kù)的編譯都可以自己動(dòng)手解決。首先下載源碼,由于國(guó)外網(wǎng)站現(xiàn)在訪問(wèn)速度很慢,可以找國(guó)內(nèi)的鏡像,像清華大學(xué)的開(kāi)源軟件鏡像站就很好,內(nèi)容很多,下載速度非常快。
https://mirrors.tuna.tsinghua.edu.cn/

在如下地址下載PySide的最新版本源碼:
https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/QtForPython/pyside2/

當(dāng)然,如果不想自己編譯,可以直接下載Qt官方編譯好的程序先體驗(yàn)。根據(jù)官方文檔,編譯PySide主要是配置用到的第三方庫(kù),如libclang,Python, CMake等,這些都可以從Qt的開(kāi)發(fā)工具中下載到:
https://mirrors.tuna.tsinghua.edu.cn/qt/development_releases/prebuilt

下載好后,我喜歡將配置寫(xiě)在一個(gè)批處理文件中,如下所示:
@echo off
set path=%path%;D:\Qt\perl-5.20.3.3\perl\bin;D:\Python\Python37;D:\Python\Python37\Scripts;D:\Qt\Qt5.14.0\bin;
set LLVM_INSTALL_DIR=D:\Qt\libclang
python setup.py install --qmake=D:\Qt\Qt5.14.0\bin\qmake.exe --cmake=D:\Qt\cmake-3.8.0-win32-x86\bin\cmake.exe
啟動(dòng)Visual Studio的命令行工具,切換到pyside-setup文件夾中,運(yùn)行批處理就可以了。當(dāng)然編譯要花點(diǎn)時(shí)間。編譯好后,會(huì)自動(dòng)安裝到Python的site-packages里面。切換到例子文件夾,運(yùn)行例子代碼,出來(lái)下面的窗口說(shuō)明編譯成功了。

選擇Python的原因是可以對(duì)應(yīng)用程序提供二次開(kāi)發(fā)功能,而且支持GUI的定制開(kāi)發(fā)。原來(lái)也考慮過(guò)Tcl/Tk,即OpenCASCADE的Draw Test Harness使用的腳本語(yǔ)言,自定義擴(kuò)展簡(jiǎn)單。但是支持的功能也相對(duì)簡(jiǎn)單,且原生的Tcl不支持面向?qū)ο蟮拈_(kāi)發(fā)。Python支持面向?qū)ο蟮母拍睿且彩强缙脚_(tái)的。自己編譯Qt及PySide可以根據(jù)需要,不編譯Qt的一些模塊,使程序盡量精簡(jiǎn)。
為了方便大家在移動(dòng)端也能看到我的博文和討論交流,現(xiàn)已注冊(cè)微信公眾號(hào),歡迎大家掃描下方二維碼關(guān)注。