Python to Executable



  • Hallo zusammen,

    ich habe heute für einen Kollegen schnell ein kleines Python Programm zusammengeschrieben.

    Die eigentliche Aufgabe ist in 3 Zeilen erledigt, drum herum kommt aber noch eine kleine GUI, die ich mir schnell mit pyQt zusammen geklickt habe.

    Ach, ich nutze Anaconda, falls das von interesse ist.

    Abhängigkeiten sind:

    from PyQt5 import QtCore, QtGui, QtWidgets
    import numpy as np
    from scipy.integrate import simps
    

    Jetzt habe ich mir gedacht, mach ich da schnell 'ne exe raus, damit der Kollege das einfach ausführen kann.
    Mit pyInstaller klappt das, aber die exe ist dann über 200MB groß mit der Option "onefile". Mit "onedir" sind es über 400MB (bei unter 200 Zeilen Code insgesamt). Außerdem stürzt die Exe beim Beenden des Programms ab (passiert wenn man das Skript ausführt nicht).
    Ich habe auch versucht eine neue saubere Anaconda Umgebung zu erstellen (was ich auf Stackoverflow gefunden habe), aber das macht keinen großen Unterschied bei der Größe.

    py2exe klappt nicht, ist aber auch veraltet.

    cx_Freeze behauptet das das System die Dateien nicht finden kann.

    Kann mir vlt jemand erklären, wie ich das entweder mit pyInstaller so hinbekomme, dass die Executable, sagen wir, unter 50 MB hat? (Auch das ist eigentlich noch unverschämt groß). Ich habe noch gefunden, dass das mit Virtualenv funktionieren könnte, aber das habe ich noch nicht probiert, hat da vlt jemand Erfahrung mit? Toll wäre auch, wenn die Software nicht abstürzt beim Beenden, aber das ist im Moment Bonus.

    Oder kann mir erklären, wie man cx_Freeze zusammen mit Anaconda unter Windows verwendet? Gibt es da die Chance, dass die Exe kleiner wird?

    Natürlich bin ich auch offen, für einen ganz anderen Weg 😉

    Bei der Zeit die ich heute darauf verwendet habe die exe zu erstellen, hätte ich das wahrscheinlich schneller von Hand in c++ geschrieben, aber jetzt ist mein Ehrgeiz geweckt und ich würde das gerne hinbekommen.



  • Mit 50MB wird es nicht werden da Qt, PyQt und die Python runtime inkludiert werden müssen.



  • So, ich bin jetzt bei 59,6 MB und es stürzt auch nix mehr ab.

    Was hab ich gemacht:

    • Anaconda und alles was dazu gehört deinstalliert
    • Python 3.7 für Windows installiert
    • Alle benötigten Pakete installiert

    Und fertig.

    Achtung: Aktuelles Python 3.8 scheint nicht mit PyQt5 zu funktionieren ("ImportError: DLL load failed while importing QtCore")


Log in to reply