如何运行Nuitka编译的Python可执行文件

时间:2014-12-21 23:12:14

标签: python ubuntu wine nuitka

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

print("Hello please")

我使用命令hello.exe转变为nuitka hello.py。但是,当我尝试使用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分区上的hello.exe(Ubuntu和Windows都是64位),我收到以下错误:

  

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

Nuitka是否正在创建一个32位exe的问题,我试图在64位操作系统上运行它?如果是这样,任何人都知道如何解决它?

1 个答案:

答案 0 :(得分:6)

根据Nuitka手册

  

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

如果你运行nuitka hello.py on Ubuntu (and thus gcc ELF) you will create hello.exe`但是只支持linux的ELF可执行文件

如果你在Windows(以及gcc / PE)上运行nuitka hello.py,你将创建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#然后可能重命名。