【问题标题】:How to run a Nuitka compiled Python executable如何运行 Nuitka 编译的 Python 可执行文件
【发布时间】:2015-02-20 02:02:45
【问题描述】:

我正在 Ubuntu 14.04 上试验 Nuitka 并尝试创建和运行可执行文件。我有一个文件hello.py 的内容

print("Hello please")

我已经使用命令nuitka hello.py 变成了hello.exe。但是,当我尝试使用 Wine 1.7 运行它时,我收到以下错误:

$ wine hello.exe
wine: Bad EXE format for Z:\home\crclayton\hello.exe.

我认为这是 Nuitka 的问题,而不是 Wine 的问题,因为我可以使用 Wine 运行我在 C# 中创建的 helloworld.exe。有人知道怎么解决吗?

编辑:

我在 Ubuntu 上没有任何运气,所以我在我的 Windows 7 分区(Ubuntu 和 Windows 都是 64 位)上测试了 hello.exe,我收到以下错误:

此文件的版本与您正在运行的 Windows 版本不兼容。检查您计算机的系统信息,看看您是否需要 x86(32 位)或 x64(64 位)版本的程序,然后联系软件发行商。

问题是 Nuitka 正在创建 32 位 exe 而我试图在 64 位操作系统上运行它吗?如果是这样,有人知道如何解决吗?

【问题讨论】:

  • 运行file hello.exe会得到什么?
  • @icktoofay ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=2818f1ff4011ed5d22666d59b490cfac8aef0af9, not stripped 我猜它是 64 位的,所以这不是问题。
  • 从那里,我可以看到 Nuitka 正在生成一个 Linux 可执行文件。这当然会在带有./hello.exe 的 Linux 上运行,但因为它是 Linux 可执行文件而不是 Windows 可执行文件,Windows 将无法理解它,Wine 也不会。
  • Nuitka 创建 C++ 代码,因此您可以获得该代码并使用所需的编译器/目标选项进行编译。
  • ao.gl/how-to-package-a-python-app-using-nuitka 上写了一份详细的指南来说明如何做到这一点

标签: python ubuntu wine nuitka


【解决方案1】:

根据 Nuitka 手册

生成的文件名在所有平台上都是 program.exe,这并不意味着它不能在非 Windows 上运行!但是如果你编译程序,我们不想覆盖它,或者不确定哪个是编译后的形式,哪个不是。

如果你运行 nuitka hello.py on Ubuntu (and thusgccELF) you will createhello.exe` 但是一个 linux-only ELF 可执行文件

如果您在 Windows 上运行 nuitka hello.py(因此运行 gcc/PE),您将创建 hello.exe 但一个仅限 Windows 的 PE 可执行文件(可以通过 WINE 在 linux 中执行)

Nuitka、Cython、cx_freeze 不会生成与操作系统无关的可执行文件,但提供了为特定操作系统构建的方法

你正在尝试做两件事中的一件 1)为windows构建linux。如果是这种情况,您需要配置交叉编译或在 WINE 中进行最终构建(即安装到 wine:python、nuitika、gcc...)

2) 你在 linux 中为 linux 构建。 chmod +x hello.exe; ./hello.exe # 然后可能会重命名。

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多