Qt for Python 5.15.0发布

本文翻译自Qt for Python 5.15.0 is out!
原文作者:Cristián Maureira-Fredes,Qt公司研发经理
校审:Mark Wang


大家好!我们非常高兴地宣布Qt for Python 5.15.0现已发布!🎊🐍

与往常一样,您可以运行命令pip install pyside2 获得最新安装文件,或pip install -U pyside2 升级当前版本。

同时,我们还想为仍在使用5.14版本的用户发布另一个版本,所以我们决定同时发布5.14.2.2。您可以通过运行命令pip install pyside2==5.14.2.2 获取该版本。

我们花了大部分时间处理了与Threads and Python相关的老问题,也在其它方面做出了改进,您可点击这里查看我们的变更日志。现在,让我们谈谈Qt for Python 5.15.0。

 


PySide中的线程

很久之前,一份bug报告曾指出在PySide应用程序中运行线程时会有一个问题。我们认为这是一个需要解决的重要问题,但从未预计到这需要全新的方式来处理与Python全局解释锁 (GIL)的交互。

我们投入了大量时间试图解决这个问题,并在尝试各种方案后,最终找到了合适的解决方案。

简而言之,解决方案是这样的:

  • 采用一种缓存机制,用于在方法没有使用Python Function覆盖时避免分配GIL

  • 减少使用 Py_BEGIN_ALLOW_THREAD Py_END_ALLOW_THREAD

  • 默认情况下,所有方式都不允许使用线程,只在需要时使用。

您可以点击这里(PYSIDE – 803)了解解决问题的整个过程。简而言之,我们很高兴告诉大家我们大幅提升了线程的反应性!🎉

故事并未就此结束,因为现在通过这种严格方式,我们需要特别留意许多极端场景,其中一个是PYSIDE – 813,从中我们了解到CPython函数PyDict_GetItem使用线程状态来维护全局错误变量,但更重要的是我们在Signal Manager中发现了一个争用条件。

我们在5.14版中修复了这些问题,这就是我们希望在5.14.2之后的两个新版本中包含最新发现和修复的原因。

 


商业版

除了解决PySide中的GIL和线程问题,我们还听取了许多Qt客户有关希望在Python中使用某些Qt for Automation模块的需求。我们非常高兴地宣布Qt for Python 5.15.0首次加入了商业版模块:

Qt for Automation商业版用户可以从https://account.qt.io/downloads下载安装包。

商业版客户将会通过一个内部下载链接获取安装包,而不是从PyPi获得Python安装包,因为使用PyPi您只能够输入pip install pyside2。下载安装包后,您可以运行以下命令来安装文件:

pip install shiboken2-5.15.0.commercial-5.15.0-cp35.cp36.cp37.cp38-none-win_amd64.whlpip install PySide2-5.15.0.commercial-5.15.0-cp35.cp36.cp37.cp38-none-win_amd64.whl

请记住,这并不包括绑定生成工具Shiboken Generator,因为该安装需要更多步骤,请参考这里

 


社区贡献

使用Python构建图形用户界面的方法有很多,但是我们的用户基数已急剧增长,我们坚信这对我们项目至关重要。

我们参加了一个柏林Hacktoberfest活动,在那里开发者们帮助我们把一些示例从C++移植到了Python。非常感谢大家!

我们的合作伙伴KDAB也为Qt for Python做出了贡献,基于双方的交流,我们改进了相关模块。

当用户希望参与贡献时,我们会通过各种交流渠道协助他们。例如,因为外部贡献者Andreas需要一个模块并决定将其贡献给项目,现在PySide中有了QtSerialPort

最后也同样重要的是,感谢那些积极在邮件列表、IRC、Matrix、Gitter、Keybase和Telegram上帮助了其他用户的贡献者们。

如果您有兴趣,也欢迎您随时从这里加入以上任意平台!

 


下一步计划

我们在开发Qt 5.15时就考虑到了Qt 6,我们正集中精力改进模块的当前状态。

  • 文档:C++代码片段、缺少示例、参数错误等等,这些都是我们社区中的常见问题,我们正努力逐步改善这些情况,例如准备指南,以改进文档的当前状态。

  • 示例和教程:Qt Virtual Tech Con 2020后,许多用户要求拿到更多示例、举办更长时间的研讨会来分享最受欢迎的用例。为此,我们正在策划新的活动,以及关于如何混合使用C++和Python的教程。

  • Shiboken:除了对教程和示例的大量需求,我们还在集中精力调整Qt 6的开发工作。我们已开始清理绑定生成器工具,很想听听您对Shiboken的需求。

  • PySide:改进商业版产品能帮助我们从多种商业应用场景的客户那里得到反馈,这将带来新的用例,以便我们改进相应模块。

对于所有依赖PySide的开源软件项目,我们一直在直接沟通,以确定bug的优先级,并向模块中添加特别功能

我们正竭尽全力完成Qt 6(在PYSIDE-904中描述的)所有功能,但是我们更想听到您的需求反馈。

让我们保持联系!现在就从这里下载Qt 5.15,并加入我们的社区吧!

已标记关键词 清除标记