Python与Java字节码
我希望我的 python GUI 应用程序可以在所有三个操作系统上运行,而无需在每个平台上重新编译。由 pyinstaller(由或类似实用程序)平台创建的 python 可执行文件是否像 Java 的字节码一样独立?Java 的字节码使用 JRE 在 Windows、Mac 和 Linux 上运行。
回答
它就在文档中
PyInstaller 的输出特定于活动的操作系统和 Python 的活动版本。这意味着要为以下内容准备分发:
- 不同的操作系统
- 不同版本的 Python
- 32 位或 64 位操作系统
你在那个操作系统上运行 PyInstaller,在那个版本的 Python 下。执行 PyInstaller 的 Python 解释器是捆绑包的一部分,它特定于操作系统和字长。
换句话说:不,它不可移植。您需要针对每个平台/架构进行编译。
正如@juanpa.arrivillaga 在评论中所述,这与 python 通常执行的字节码无关。那是便携的。这里的问题是 PyInstaller 捆绑了一个特定于操作系统和体系结构的 python 解释器(也就是说,这与您通常无法在 MacO 上运行 Windows 可执行文件的原因相同)。
- Important to note, this has nothing to do with *Python bytecode* which *is portable* to any machine that has the right version of the interpreter