【问题标题】:Python vs Java bytecodePython 与 Java 字节码
【发布时间】:2021-09-06 22:33:24
【问题描述】:

我希望我的 python GUI 应用程序可以在所有三个操作系统上运行,而无需在每个平台上重新编译。 pyinstaller(由或类似实用程序)平台创建的python可执行文件是否像Java的字节码一样独立? Java 的字节码使用 JRE 在 Windows、Mac 和 Linux 上运行。

【问题讨论】:

  • Python 字节码在虚拟机上运行,​​是的。但这与 pyinstaller 是否制作可移植的可执行文件并不真正相关
  • 您无需使用[java] 标记此内容。你实际上并没有问任何关于 Java 的问题,而且你的问答也无助于询问 Java 主题的人。
  • 请注意,如果您将 Java 应用程序 + JVM 捆绑到 .exe 文件(或其他平台的等效文件)中,那也将是特定于平台的。您可以拥有一个需要在用户系统上安装 VM/解释器的跨平台软件包;或者你可以有一个独立的可执行文件,没有在特定平台上工作的依赖项。你不能有一个没有依赖关系的跨平台可执行文件(嗯,有this,但这仍然是 x64 特定的,可能不适用于 Python 或 Java)。

标签: python pyinstaller bytecode platform-independent


【解决方案1】:

就在documentation

PyInstaller 的输出特定于活动的操作系统 和 Python 的活动版本。这意味着要准备一个 分布:

  • 不同的操作系统
  • 不同版本的 Python
  • 32 位或 64 位操作系统

你在那个操作系统上运行 PyInstaller,在那个版本的 Python 下。这 执行 PyInstaller 的 Python 解释器是包的一部分, 它特定于操作系统和字长。

换句话说:不,它不是便携式的。您需要针对每个平台/架构进行编译。

正如@juanpa.arrivillaga 在 cmets 中所说,这与 python 通常执行的字节码无关。那可移植的。这里的问题是 PyInstaller 捆绑了一个特定于操作系统和体系结构的 python 解释器(也就是说,这不起作用,原因与您通常无法在 MacO 上运行 Windows 可执行文件的原因相同)。

【讨论】:

  • 需要注意的是,这与 Python 字节码 无关,它可移植 到任何具有正确版本解释器的机器上跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多