2016-07-31 18 views
2

Ich versuche, ein Python-Tool zu packen, schrieb ich in eine EXE-Datei für die Verwendung auf Windows 10. Soweit ich weiß, ist die Exe korrekt erstellt. Es lädt und alles funktioniert, wenn ich es von der Kommandozeile aus ausführen.PyInstaller EXE funktioniert nur, wenn von cmd ausgeführt

Wenn ich jedoch versuche, das Tool von Explorer (Doppelklick auf das Symbol) auszuführen, erhalte ich einen Fehler "Skript konnte nicht ausgeführt werden". Ich habe versucht, es mit dem Schalter --debug zu bauen, in der Hoffnung, dass ich schnell jede Ausgabe fangen könnte, bevor Cmd schließt, aber es ist einfach zu schnell.

Die Linie Ich benutze das Werkzeug zu bauen, ist:

pyinstaller.exe --onefile --debug --console --icon=C:\Users\Ross\Desktop\gtt\assets\icon.ico --hidden-import xlrd gtt.py 

Es funktionierte perfekt, bevor ich die reportlab Module begann mit:

from reportlab.lib import colors 
from reportlab.lib.enums import TA_CENTER 
from reportlab.lib.pagesizes import letter, portrait 
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle 
from reportlab.lib.units import inch 
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer 

Die Befehlszeile ich keine Ausgabe auf Fehler gibt absolut, wenn führen sie es den Debug-Schalter: Screenshot showing tool running in cmd

ich folgendes und nichts gearbeitet hat versucht haben.

  • --noupx
  • --onedir
  • --onefile

Um es zusammenzufassen, warum sollte eine PyInstaller exe-Datei arbeiten, wenn sie von der Befehlszeile ausführen, aber nicht von der Windows GUI?

BEARBEITEN: Das Problem scheint mit PyQt4 zu sein. Ich ging zurück zu einem Commit, bei dem ich von tkinter zu Qt wechsele und das Problem ist immer noch da. Der vorherige Build mit tkinter wird über die GUI geladen.

Antwort

0

Ich fand es heraus!

Ich musste die gui.ui-Datei in ein Paket konvertieren.

  1. habe ich das Paket "gui", eine leere __init__.py
  2. Ich lief pyuic4 gui.ui -o gui.py den gui.ui Code in Python zu konvertieren enthält
  3. zog ich beide gui.ui und gui.py Dateien in das gUI-Verzeichnis
  4. In meinem Haupt-Programmcode, importierte ich das Modul: from gui.gui import *

Hoffnung, dass jemand anderes hilft!