当您使用Qt编写应用程序时,它是否可以直接在不同的操作系统上运行?而且(如果我理解不正确,请纠正我)您不需要在想要执行应用程序的所有不同平台上都安装Qt吗?
这是如何实现的?Qt是针对所需平台进行编译还是捆绑了一些“dlls”(库),或者它是以其他方式实现的?与编写跨平台运行的Java应用程序有何不同?
如果您使用Python编写具有Python绑定的Qt应用程序,则最终用户需要安装Python吗?
Qt(理想情况下)提供源代码兼容性,而不是二进制兼容性。您仍需要为每个平台单独编译应用程序,并使用适当的动态 Qt 库(这些库也需要单独编译,并具有一些特定于平台的代码)。
对于您的最后一个问题,用户需要Python、Qt库和绑定库(例如pyqt),但有各种打包方式可供选择。
PyQT [以及其开源的同类 PySide] 是一个非常棒的跨平台 QT 绑定库,可以用于 Python 编程语言,但是它并不是一个能够让你在所有平台上轻松打包安装程序的魔法解决方案。也许你期望有些魔法般的效果。
QT 是一个使用 C++ 编写的跨平台库。这意味着你只需要编写一次 C++ 或 Python 代码(或使用其他支持 QT 的语言),然后创建一个“窗口”(如一个表单、对话框或屏幕上的其他组件),并为其添加控件(如按钮等),而无需考虑在 Windows、Linux 和 macOS 上制作按钮时存在的平台差异。
由于 QT 是一个库,因此它可以以多种方式进行打包。它可以被“静态链接”(即构建到您的可执行文件/二进制文件/应用程序中),也可以被“动态链接”(在 Windows 中称为 DLL,在 Unix/Linux 中称为共享库,在 macOS 中称为框架)。除非它是一个共享库,否则它不总是被“安装”到计算机上。
即使它被“安装”到了计算机上,也可能存在多个版本,因此不应将其视为计算机的扩展,而应将其视为应用程序(一个程序)的扩展。
如果您使用 QT 的 Python 绑定库,那么您的应用程序安装包需要包含 QT 绑定的二进制文件(Python 扩展)、基本的 Python 运行时环境(包括 Python 可执行文件和基本库)以及您程序的源代码。这些可以打包成一个单独的“包”。例如,在 macOS 上,这一切都可以轻松地打包到一个“.app”包中,在 Windows 和 Linux 上,我相信有打包和安装工具可以帮助您轻松完成此项任务。
即使您只需编写一次应用程序的用户界面代码,也不能通过魔法般的方式在所有三个主要平台上同时发布应用程序,而不必至少为每个平台分别构建安装程序或打包程序。用户期望为 Windows 或 macOS 下载设置/安装包,对于 Unix/Linux,则取决于您安装的发行版。
pyc
文件类型相关联”的意思——如果存在*.pyc,Python就不会去寻找*.py。而且这种区别听起来纯粹是词汇问题:Java的运行时称为“VM”,而Python的运行时称为“解释器”,尽管它们都在执行字节码。当我们的术语更多地基于历史偶然而不是今天的事情时,人们感到困惑也就不足为奇了。 :-) - Ken