main.py to *.exe mit PyInstaller -> Fehler: Failed to execute Script

  • Hallo zusammen,


    und täglich grüßt das Murmeltier.^^

    Ich habe mal wieder ein Problem und nach erfolgloser Lösungssuche, bitte ich euch um Hilfe.


    Der ein oder andere erinnert sich vielleicht noch an mein Python-Programm, das Werte aus einer Excel-Tabelle ausliest. Das habe ich nun erweitert, für eine benutzerfreundliche Bedienung habe ich mit „Qt-Creator“ eine GUI erstellt. Dadurch habe ich eine *.ui-Datei erhalten, welche von meiner „main.py“-Datei eingelesen wird. Unter Fedora mit Qt-Creator und PyCharm funktioniert das reibungslos.

    Später, wenn das Programm auch Funktionen hat, soll es allerdings als stand-alone unter Windows 7/10 laufen. Sicherheitshalber habe ich das jetzt mal testen wollen und mich jagt ein Problem nach dem nächsten.


    Habe Windows 7 auf VirtualBox installiert und darauf läuft „Anaconda“. Darin rufe ich mit „Pyinstaller –onefile –windowed main.py“ den Befehl auf, eine *.exe -Datei zu erstellen. Das funktioniert erstmal nicht und endet mit der Fehlermeldung:

    „maximum recursion depth exceeded“

    Der Fehler erscheint wohl öfters. Es wird auf ein Downgrade auf Python 3.5 hingewiesen. Habe ich gemacht, hat nicht geholfen.

    Obwohl die Fehlermeldung kommt, wurde eine main.spec – Datei erstellt, in diese habe ich dann „import sys“ und „sys.setrecursionlimit(10**6)“ eingetragen. Mit dem selben Befehl habe ich nochmal pyinstaller aufgerufen und die Fehlermeldung war weg, eine main.exe wurde erstellt.

    Die Freude war gleich wieder verschwunden, denn sie lies sich nicht ausführen. Fehlermeldung:

    Failed to execute Script


    Man sollte wohl Module in die main.spec einfügen, die nicht geladen werden konnten, daraufhin sah meine main.spec so aus:

    meine main.py so:

    Die Fehlermeldung nach dem öffnen der *.exe ist im Anhang. Sie ist zu lang um sie zu posten.


    Hat aber leider nichts gebracht. Habe das Ganze mit Python 3.5/3.6 und 3.7 versucht.

    Eventuell muss man irgendwie den PyInstaller noch hinzufügen, zumindest soetwas habe ich gelesen, habe es aber nicht wirklich verstanden.

    Habe noch vermutet, das eventuell PySide2 installiert werden muss, das schlug leider fehl, da es nicht gefunden wurde.


    Habt ihr noch einen Rat und könnt mit der Fehlermeldung mehr anfangen?

    Danke mal wieder!

    Grüße

    Dennis

    Files

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

    Edited once, last by Dennis89: Unnötige "!" gelöscht und Rechtschreibfehler behoben ().

  • Habe noch vermutet, das eventuell PySide2 installiert werden muss, das schlug leider fehl, da es nicht gefunden wurde.

    Da muss ich dich auf Wie frage ich nach Hilfe? verweisen. Ohne genaue Meldungen hilft das keinem...


    Wie soll denn PyInstaller PySide2 in deine .exe packen, wenn es lokal gar nicht installiert ist? Bevor das Script lokal nicht normal ausgeführt werden kann, brauchst du mit PyInstaller gar nicht anfangen. :conf:

    Der Fehler erscheint wohl öfters. Es wird auf ein Downgrade auf Python 3.5 hingewiesen. Habe ich gemacht, hat nicht geholfen.

    Auch hier: wer sagt das? Ist mMn. völlig unsinnig, Python 3.5 hat im September EOL. https://endoflife.date/python

  • Hallo Linus,

    vielen Dank für deine Antwort.

    Da muss ich dich auf Wie frage ich nach Hilfe? verweisen. Ohne genaue Meldungen hilft das keinem...

    Oh man das ist mir jetzt peinlich, gestern habe ich noch über deine Signatur geschmunzelt :blush:

    wenn es lokal gar nicht installiert ist?

    Ich habe nur vermutet das es fehlt, ich weis nicht ob es wirklich fehlt. Als ich das mit einer tkinter-Version des Python Programms versucht habe, hat es geklappt und da musste ich beispielsweise "pandas" auch nicht zusätzlich installieren. Oder vergleiche ich da Äpfel mit Birnen?

    Die Installationsbefehle für PySide habe ich von hier.

    conda install -c conda-forge pyside bringt dies Fehlermeldung

    conda install -c conda-forge/label/cf201901 pyside bringt dies Fehlermeldung:


    conda install -c conda-forge/label/cf202003 pyside bringt dies Fehlermeldung:

    So wie ich das interpretiere ist das PySide nur für ältere Python-Versionen?

    Jetzt habe ich den ganzen Text schon geschrieben und dabei fällt mir jetzt erst auf, das es sich hier um PySide und nicht PySide2 handeln könnte?

    Auch hier: wer sagt das? Ist mMn. völlig unsinnig, Python 3.5 hat im September EOL. https://endoflife.date/python

    Die Seite habe ich gerade nicht mehr zu Hand, die Fehlersuche ging über längere Zeit und auch an verschiedenen PC's. Ich glaube es stand auf github, kann aber auch ein alter Beitrag gewesen sein, habe mich an jedem Strohhalm festgehalten (Kann das aber nochmals suchen). Aktuell nutze ich wieder Python 3.7 und das mit der Python-Version bezog sich nur auf den Fehler: maximum recursion depth exceeded Diesen konnte ich ja mit dem Eintrag in die main.spec-Datei beheben. Habe das nur erwähnt, weil ich nicht wusste ob dieser Eintrag vielleicht den aktuellen Fehler auslöst.


    Habe den ersten Eintrag noch bearbeitet die "!!!" habe ich irgendwie aus versehen reinkopiert. Dadurch hat es sich sehr unfreundlich lesen lassen. Das war keine Absicht.



    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Ich habe nur vermutet das es fehlt, ich weis nicht ob es wirklich fehlt. Als ich das mit einer tkinter-Version des Python Programms versucht habe, hat es geklappt und da musste ich beispielsweise "pandas" auch nicht zusätzlich installieren. Oder vergleiche ich da Äpfel mit Birnen?

    Bin kein Anaconda-Nutzer, aber ziemlich sicher, dass pandas da vorinstalliert ist (was ja im Grunde der Vorteil für manche gegenüber einer regulären Python-Installation ist):

    Anaconda is a free and open-source distribution of the Python and R programming languages for scientific computing, that aims to simplify package management and deployment. The distribution includes data-science packages suitable for Windows, Linux, and macOS


    So wie ich das Interpretiere ist das PySide nur für ältere Python-Versionen?

    PySide = PySide 1 = PySide für Qt 4.x = veraltet und nicht mit Python > 3.4 kompatibel.

    PySide2 = PySide 2 = PySide für Qt 5.x = aktuell und mit Python 2.7 und 3.5 - 3.8 kompatibel.


    Schaust du hier:

  • Hallo,


    ich muss mich nochmals melden, da ich die *.exe einfach nicht zum laufen bekomme. Die Fehlermeldung ist noch wie in #1 und das Python-Script auch.

    Hier mal die WARNINGS und ERRORS, die Anaconda während der Erstellung der *.exe-Datei anzeigt:

    MySQLdb habe ich mit conda install mysql-connector-python installiert. Eine direkte Installation zu MySQLdb habe ich nicht finden können.

    zope.interface und zope.event sind beide installiert.


    Ich verstehe die Fehlermeldungen einfach nicht. Da dort Hidden import steht, habe ich die angezeigten Komponenten in die *.spec Datei gemacht unter hidden_imports[...] Das hat aber nicht zum Erfolg geführt.


    Das hier ist die aktuelle *.spec - Datei:

    Ich weis gar nicht mehr weiter. Wäre echt super nett, wenn mir jemand auf die Sprünge helfen könnte. Übersehe ich irgend etwas einfaches?

    Es muss auch nicht Anaconda sein, wenn es irgendwie einfacher oder problemloser geht, nehme ich gerne jeden Vorschlag an. Es ist nur wichtig, dass das Python-Skript als stand-alone auf Windows läuft.


    Ich danke euch schon einmal für eure Zeit :)


    Grüße Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Und ich melde mich hier wieder zu Wort :P


    Nach gefühlten 100 Nervenzusammenbrüchen war ich kurz vor dem aufgeben. Bekam dann aber von @__deets__ den Hinweis auf fbs:)

    Habe mich dann gleich dran gemacht und hatte auch relativ schnell erste Erfolgserlebnisse mit einfachen Programmen.

    Probleme traten immer erst auf, wenn ich pandas ins Spiel brachte und Infos aus meiner Excel-Datei auslesen wollte. Ich konnte das zwar ausführen, aber nicht als stand-alone-Programm.


    Doch vor einer viertel Stunde habe ich es endlich geschafft! Es funktioniert! :love: Ich bin über glücklich und falls mal einer das gleiche Problem hat, kann ich es nur empfehlen sich den Link anzuschauen :thumbup:

    Je nach Anwendung müssen eben noch verschiedene Pakete installiert werden, bei mir waren es diese:

    pandas

    xlrd

    --upgrade setuptools

    pywin32


    Dann fehlte noch die Datei "Msvcr100.dll" und ich musste import pkg_resources.py2_warn in meinen Code einfügen. Nach dem ich das alles mühsam auf englischen Seiten rausgefunden habe, hat es funktioniert.


    An dieser Stelle nochmal vielen Dank an @__deets__ !

    Sah mich schon im VBA-Forum anmelden 8o


    Viele Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Danke, dass du die Lösung von dir aus gepostet hast.

    Nur eine Frage aus Neugier:

    Warum musste es unbedingt eine einzelne .exe sein? Python scripte lassen sich doch auch durch Doppelklick starten.

    Mir fällt auf Anhieb eigentlich nur obfuscation ein (was mit Nutzung der freien QT Variante aber nichts bringt, da GPL lizenziert):denker:


    //Edit: Ich sehe gerade, dass pyside2 LGPL lizensiert ist. Dann ist closed source wohl doch erlaubt.

    Edited once, last by El_Zetto ().

  • Hey,

    das Programm wird auf verschiedenen PC‘s genutzt. So ist es jetzt kinderleicht das Programm zu nutzen, ohne vorher Python zu installieren.

    Python zu installieren ist nicht schwer, aber es geht hier um die Benutzerfreundlichkeit und darum die *.exe.


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?