我想使用Qt编写C++应用程序,但首先使用Python构建原型,然后逐步用C++替换Python代码。这是正确的方法吗?
这取决于您的目标。我已经两种语言都做过,我建议您尽可能合理地使用Python。虽然需要一些纪律性,但非常可能在Python中编写极大的应用程序。但是,当您发现热点和可以更好地处理的事情时,可以将相关部分移植到C ++。
有关此过程的综合文档是否存在,还是我必须学习每个组件,如果是,哪些组件?
对于各个部分,我建议如下:
编辑器/IDE:使用任何您熟悉的编辑器/IDE,但我强烈建议使用支持重构的编辑器/IDE。如果您熟悉Eclipse,请使用它。如果您主要走C ++路线,并且不太熟悉任何编辑器,则您可能最好使用QtCreator。
Eric是一个非常好的Python IDE,支持重构,除非您将要做大量的C ++,否则请查看它。更好的是,它的源代码是PyQt使用和实践的一个例子。
进程:
快速摘要:
- 使用PyQt编写Python应用程序
- 当识别为热点时,将解耦的Python类转换为C++
- 使用SIP创建这些类的绑定
- 将新定义的库导入Python中,以取代其Python对应项
- 享受速度提升
一般细节:
使用PyQt在Python中编写应用程序。请注意保持良好的关注点分离,以便在需要将某些部分移植到C++时,它们将与它们的依赖项分开。最后需要将某些东西移植到C++时,请使用C++/Qt编写它,然后使用SIP为其创建绑定。 SIP在该过程中有一个良好的参考手册,而您可以将PyQt作为示例。
部署:
C++ - 对于许多应用程序来说,依赖关系足够简单,使用诸如NullSoft's Installer或InnoSetup之类的工具创建安装程序并不太困难。
Python/PyQt - 由于依赖于 Python 并且依赖于 Qt 库的存在,因此 PyQt 应用程序的安装要复杂一些。有人在ARSTechnica 的这篇文章中记录了他的努力。 py2exe 在 Windows 上运行得相当不错,应该可以正常工作。IME,附带 Python 源代码的freeze.py有时会出现问题,无法确定哪些共享库是真正必要的,有时会创建一个其依赖项不存在的二进制文件。Py2app 可以在 Mac OS X 上运行。
但更糟糕的是 PyQt/Qt 的许可证。如果您正在开发商业应用程序,您需要拥有商业 PyQt(和 Qt)许可证,并确保防止用户轻松修改源代码或以其他方式针对 PyQt/Qt API 编写代码
由于许可限制。因此,PyQt 作者创建了一个名为
VendorId 的工具(虽然它具有 Python 许可证)。在 VendorId 中有一个名为
SIB 的工具,可以用于创建仅依赖于 Python 解释器的可执行文件。但是,如果您要走这么远,您可能需要安装一个自定义 Python 并将其与您的应用程序一起使用。
免责声明:我根本没有使用
PySide,所以我不确定它与 PyQt 相比如何。此外,请注意他们网站上的以下警告:
PySide 是一个正在进行中的项目,还不适合需要生产级稳定性的应用程序开发。
但是,好消息是,至少在最初发布时,他们打算“与 PyQt 保持 API 兼容”。因此,除了 C++ 绑定之外,您稍后可以轻松切换两者之间的差异。