executable via Pyinstaller

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
frcom
User
Beiträge: 49
Registriert: Sonntag 24. September 2017, 19:35

Hallo,
Ich habe ein GUI-Anwendung geschrieben, die aus drei .py files besteht. Wenn ich die Anwendung über Python laufen lasse, habe ich auch nie Probleme mit dem Programm, es stürzt nie ab und es werden keine Fehlermeldungen auf der Konsole ausgegeben. über

Code: Alles auswählen

pyinstaller -F -n NAME PROGRAMM.py
habe ich mir nun eine executable NAME erstellt. Die läuft auch und die meisten Funktionen stellen keine Probleme dar.
Ich habe folgende Probleme:
Problem1:
Bei einigen Funktionen stürzt jedoch das Ganze Programm (nur die Excutable) ab und schließt sich. Wenn ich NAME aber über

Code: Alles auswählen

./NAME
starte, bekomme ich sofort folgende Meldung:

Code: Alles auswählen

(NAME:1447): GdkPixbuf-WARNING **: 17:47:32.369: Cannot open pixbuf loader module file '/tmp/_MEI5S0Y3c/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory

This likely means that your installation is broken.
Try running the command
  gdk-pixbuf-query-loaders > /tmp/_MEI5S0Y3c/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
to make things work again for the time being.
Gtk-Message: 17:47:32.381: Failed to load module "canberra-gtk-module"
Gtk-Message: 17:47:32.382: Failed to load module "canberra-gtk-module"
No file found for ".xml" , even though update-mime-info said it would exist.
Either it was just removed, or the directory doesn't have executable permission... ("/tmp/_MEI5S0Y3c/share/mime")
Das Programm benutzen kann ich allerdings trotzdem. Wenn ich nun eine der Funktionen aufrufe, die zum Absturz führen, bekomme ich diese Fehlermeldung

Code: Alles auswählen

Traceback (most recent call last):
  File "GUI.py", line 267, in savehere
KeyboardInterrupt
Aborted (core dumped)
und das Programm schließt sich.

Problem2:
Außerdem habe ich noch eine Frage zu pyinstaller: Ich habe in dem Programm Buttons, die über

Code: Alles auswählen

webbrowser.open_new(https://example.com)
eine Internetseite aufrufen. Wenn ich das Pythonskript normal laufen lasse, sucht sich das Programm einfach den Defaultbrowser des Benutzers und ruft die Seite auf, wenn ich die executable laufen lasse bekomme ich die Meldung:

Code: Alles auswählen

gio: https://example.com: No application is registered as handling this file
Wie bekomme ich das hin, dass sich auch die executable eine fähige Application sucht? Oder muss ich über einen subprocess eine Application schon im browser gezielt ansprechen?

Ich wäre so Dankbar, wenn mir bei den beiden Problemen jemand helfen könnte...
Grüße

P.S.
Hier könnt ihr den Code des Programms angucken, falls das nötig ist: https://github.com/leonfrcom/ErroRCalcS ... pplication
Der Button 'save here' ist QFileDialog in GUI.py (problem 1)
Die Buttons 'open', 'Donate' und 'Usage' sind QPushButtons in GUI.py und verlinken über add.py auf eine Datei bzw. Internetseiten (Problem 2)
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

`__pycache__` gehört nicht in ein Repository, das sind automatisch generierte, gecachete Binärdaten. Die braucht man nicht, die werden bei Bedarf von Python im Hintergrung erstellt.

Ein Ordner höher die `executables` gehören auch nicht unter Versionskontrolle.

Das die `setup.py` bei den anderen Modulen liegt ist ungewöhnlich bis falsch.

Das ist doch eine Qt-UI – wo kommt denn da Gtk ins Spiel? Das könnte übrigens ein Grund sein: verschiedene GUI-Rahmenwerke im gleichen Programm mögen sich nicht unbedingt gegenseitig. Die sind ja jeweils davon ausgehend geschrieben, dass sie für das ganze UI-Handling verantwortlich sind.

Ist da eigentlich irgentetwas wirklich Windows-spezifisches, oder sind hart kodierte Pfade mit Backslashes als Trennzeichen das einzige was dieses Programm davon abhält auch unter anderen Systemen zu laufen? Ändere das doch wenigstens auf normale Schrägstriche. Ausser in der Eingabeaufforderung kommt auch Windows damit zurecht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
frcom
User
Beiträge: 49
Registriert: Sonntag 24. September 2017, 19:35

Erstmal Danke für die git-Hinweise... Ich bin völliger git-Neuling und wollte lediglich ein wenig lernen, wie ich die Grundzüge gits benutze... Daher das Repository... Bei dem Vorhaben helfen deine Tipps wirklich!

Wo da Gtk ins spiel kommt verstehe ich auch nicht... Ich habe im code ja nur Qt benutzt. Wo genau meinst du denn, dass Gtk vorkommt?
Windowsspezifisch dürfte da nichts sein... Ich hab den Code unter Linux geschrieben und getestet... Und die einzigen Backslashes sind doch in dem Pfad zum Icon in der GUI.py, das habe ich geändert und der Rest sind doch normale Schrägstriche.
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@frcom: Na Du hast doch die Fehlermeldungen weiter oben gepostet, da steht doch laut und deutlich Gtk drin, und die `gio`-Meldung ist von `glib`, was ja auch ”Konkurrenz”-Produkt zu Qt ist.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
frcom
User
Beiträge: 49
Registriert: Sonntag 24. September 2017, 19:35

Ja das sehe ich :D aber ich habe keinen schimmer wo die her kommt...
Antworten