posts - 437, comments - 588, trackbacks - 0, articles - 0

编译PySide

Posted on 2020-01-14 20:48 eryar 阅读(2050) 评论(0)  编辑 收藏 引用 所属分类: 1.PipeCAD

编译PySide

PySide是跨平台应用程序框架QtPython绑定版本。在20098月,PySide首次发布。提供和PyQt类似的功能,并相容 API。但与 PyQt 不同处为使用LGPL授权。

PySide的推出比pyQt晚很多,但也有些年头了。由于先前PySide项目不是很完善,又缺乏文档,所以其存在感不高。Pyside的诞生主要是Nokia(收购了TrolltechNokia当时是Qt的爸爸)与Riverbank Computing谈崩了的结果。Riverbank ComputingpyQt的开发商,对pyQt采用GPLv3协议。Nokia主动与Riverbank Computing展开了多轮协商,表示希望pyQt能添加对LGPL协议的支持,这样对于很多商业用户会更友好,何况你在pyQt里使用的也是我们LGPL协议版本的Qt,这个要求不过分吧。Riverbank Computing说我觉得不行。大概是觉得Riverbank Computing吃相难看,Nokia一气之下决定单干,于20098月发布了支持了LGPL协议的PySidepyQt的对标产品。然鹅,就算你是亲生的,刚生下来也打不过一个壮小伙子,何况你马上就要被过继出去了。。(滑稽2011年,NokiaQt的商业许可卖给Digia2012年,NokiaQt完全卖给Digia,后者在2012年年底推出了Qt5。遭遇人生的重大变故,PySide项目未来如何发展还是个未知数,更不要说支持Qt5了。反观pyQt,在Qt5推出的半年内(20136月)就发布了支持Qt5pyQt5。一边是生死未卜的只支持Qt4还不完善的主要依靠社区维护的PySide,一边是全面支持Qt4/Qt5的文档健全的pyQt,强弱悬殊,高下立判。好在Digia收购了Qt后,决定大力度支持Qt全方位发展,并于20149月将Qt分拆成一家独立全资子公司The Qt Company,后者于2016年在纳兹达克赫尔辛基上市。PySideQt5提供支持的计划也从2014年开始筹备,也就是2015年上马的Qt for Python项目,该项目开发的模块命名为PySide2,以表示与老一代PySide的不同。虽说加大了投入,该补的课也绕不开,PySide2Qt公司和Qt社区开发者的共同努力下,也只在20186月才正式发布了第一个版本,稳定性还是个问题。不过从01是最难的,后面就容易了,尤其最近发布的Qt 5.12 LTS释放了非常积极的信号,PySide2已经日趋完善,又是亲生的,还有LGPL开源协议的加持,今后PySide2有足够的理由成为Python开发者使用Qt的第一选择。(来自:https://www.zhihu.com/question/306793447

有了编译开源库OpenCASCADE等的经验,这些开源库的编译都可以自己动手解决。首先下载源码,由于国外网站现在访问速度很慢,可以找国内的镜像,像清华大学的开源软件镜像站就很好,内容很多,下载速度非常快。

https://mirrors.tuna.tsinghua.edu.cn/

 

 在如下地址下载PySide的最新版本源码:

https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/QtForPython/pyside2/

 

当然,如果不想自己编译,可以直接下载Qt官方编译好的程序先体验。根据官方文档,编译PySide主要是配置用到的第三方库,如libclangPython, CMake等,这些都可以从Qt的开发工具中下载到:

https://mirrors.tuna.tsinghua.edu.cn/qt/development_releases/prebuilt

 

下载好后,我喜欢将配置写在一个批处理文件中,如下所示:

@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

启动Visual Studio的命令行工具,切换到pyside-setup文件夹中,运行批处理就可以了。当然编译要花点时间。编译好后,会自动安装到Pythonsite-packages里面。切换到例子文件夹,运行例子代码,出来下面的窗口说明编译成功了。

 

选择Python的原因是可以对应用程序提供二次开发功能,而且支持GUI的定制开发。原来也考虑过Tcl/Tk,即OpenCASCADEDraw Test Harness使用的脚本语言,自定义扩展简单。但是支持的功能也相对简单,且原生的Tcl不支持面向对象的开发。Python支持面向对象的概念,同是也是跨平台的。自己编译QtPySide可以根据需要,不编译Qt的一些模块,使程序尽量精简。

 


为了方便大家在移动端也能看到我的博文和讨论交流,现已注册微信公众号,欢迎大家扫描下方二维码关注。
Shing Liu(eryar@163.com)

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理