Как запустить скомпилированный Nuitka исполняемый файл Python

Я экспериментирую с Nuitka на Ubuntu 14.04 и пытаюсь создать и запустить исполняемый файл. У меня есть файл 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 для запуска helloworld.exe, который я создал в C#. Кто-нибудь знает как это исправить?

Редактировать:

Мне не повезло в Ubuntu, поэтому я протестировал hello.exe на своем разделе Windows 7 (и Ubuntu, и Windows 64-битные), и я получил следующую ошибку:

Версия этого файла не совместима с версией Windows, которую вы используете. Проверьте системную информацию вашего компьютера, чтобы узнать, нужна ли вам версия программы для x86 (32-битная) или x64 (64-битная), а затем обратитесь к издателю программного обеспечения.

Проблема в том, что Nuitka создает 32-битный exe, и я пытаюсь запустить его на 64-битной ОС? И если так, кто-нибудь знает, как это исправить?

1 ответ

Решение

Согласно инструкции Nuitka

Результирующее имя файла будет program.exe на всех платформах, но это не значит, что оно не работает не на Windows! Но если вы компилируете программу, мы бы не хотели перезаписывать ее, или не были бы уверены, какая из них является скомпилированной формой, а какая нет.

Если вы бежите nuitka hello.py on Ubuntu (and thusНКУELF) you will createhello.exe` НО исполняемый ELF только для Linux

Если вы бежите nuitka hello.py на Windows (и, следовательно, gcc/ PE) вы создадите hello.exe НО исполняемый файл PE только для Windows (который может быть выполнен в Linux через WINE)

Nuitka, Cython, cx_freeze не создает независимый от ОС исполняемый файл, но предоставляет средства для сборки для конкретной ОС

Вы пытаетесь сделать одну из двух вещей: 1) встроить Linux для Windows. Если это так, вам нужно настроить кросс-компиляцию ИЛИ сделать окончательную сборку в WINE (т.е. установить в wine: python, nuitika, gcc...)

2) вы строите в Linux для Linux. chmod +x hello.exe; ./hello.exe # а потом возможно переименовать.

Другие вопросы по тегам