hmm: Python2 exe für Windows in Ubuntu erstellen

Hi Leute,

ich habe ein Python2 Script welches die Bibliothek numpy benutzt. Ich erweitere dieses Script auf einem Ubuntu Rechner.

Jetzt würde ich gerne eine exe daraus erstellen, die sich auf einem Windows Rechner ausführen lässt. Geht das? Falls ja wie? leider kann zb py2exe nicht auf Ubuntu installiert werden weil Windows.h fehlt:


source/MemoryModule.c:32:21: fatal error: Windows.h: No such file or directory

 #include <Windows.h>

                     ^

compilation terminated.

error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

Zusatzfrage: Was braucht eine exe auf jeden Fall um zu funktionieren? Eine Python Installation und die genutzten Packete (z.B. numpy) oder wird eins davon oder sogar beides mit in die exe eingebaut? Wenn ich eine jar mit Java baue kann ich die notwendige Java Umgebung mitliefern und in den Ordner der jar pfeffern so das nix auf dem jeweiligen Rechner installiert sein muss, geht das auch bei Python?

akzeptierte Antworten

  1. Tach!

    Jetzt würde ich gerne eine exe daraus erstellen, die sich auf einem Windows Rechner ausführen lässt. Geht das? Falls ja wie? leider kann zb py2exe nicht auf Ubuntu installiert werden weil Windows.h fehlt:

    Python auf Windows installieren und py2exe ausführen. Du musst ja sowieso auf Windows testen, ob das so funktioniert wie du möchtest, also kannst du es auch gleich dort machen.

    Was braucht eine exe auf jeden Fall um zu funktionieren?

    Windows oder eine dem Windows nachempfundene Umgebung.

    Eine Python Installation und die genutzten Packete (z.B. numpy) oder wird eins davon oder sogar beides mit in die exe eingebaut?

    Das ist der SInn und Zweck, eine exe daraus zu machen, dass alles darin enthalten ist. Vielleicht werden auch noch ein paar DLLs erstellt, die ebenfalls benötigt werden.

    Wenn ich eine jar mit Java baue kann ich die notwendige Java Umgebung mitliefern und in den Ordner der jar pfeffern so das nix auf dem jeweiligen Rechner installiert sein muss, geht das auch bei Python?

    Python ist eine Sprache, die üblicherweise interpretiert wird und nicht wie Java in einen Zwischencode übersetzt wird, der in einer VM ausgeführt wird. Du brauchst also keine Laufzeitumgebung, sondern den Python-Interpreter. Und py2exe sollte dein Script mit diesem Interpreter so verbinden, dass alles zusammen in die exe kommt.

    dedlfix.

    1. Prinzipiell hat dedlfix erst einmal recht.

      Allerdings gibt in Python durchaus einen Bytecode, der sogar abgespeichert und ausgeführt werden kann. Der ist aber nicht unabhängig von Python ausführbar - also nicht "standalone", keine exe.

      Einstieg.

      Rezept von dieser Stelle:

      python -m compileall .
      

      oder ein Python-Skript:

      import py_compile
      py_compile.compile("file.py")
      

      oder nach dem Ausführen eines beliebigen Python-Skriptes ("file.py") mal in ./__pycache__/ nachsehen und python2 file.pyc ausführen.