Ausführbare Datei von Python-Code mittels `pyinstaller` erzeugen.

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
Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Samstag 18. Mai 2019, 20:44

Hallo

Von einem Beispielprogramm wollte ich mittels `pyinstaller` eine ausführbare Datei für Linux erzeugen.

Dazu habe ich im Hauptverzeichnis des Beispielprogramms ein Terminal geöffnet und folgenden Befehl eingegeben.

Code: Alles auswählen

pyinstaller main.py
Im Terminal erschien nun folgender Text:

Code: Alles auswählen

57 INFO: PyInstaller: 3.4
57 INFO: Python: 3.6.7
57 INFO: Platform: Linux-4.15.0-50-generic-x86_64-with-Ubuntu-18.04-bionic
58 INFO: wrote /home/ata/source/hide-layout/main.spec
59 INFO: UPX is not available.
61 INFO: Extending PYTHONPATH with paths
['/home/ata/source/hide-layout', '/home/ata/source/hide-layout']
61 INFO: checking Analysis
61 INFO: Building Analysis because Analysis-00.toc is non existent
61 INFO: Initializing module dependency graph...
63 INFO: Initializing module graph hooks...
67 INFO: Analyzing base_library.zip ...
3015 INFO: running Analysis Analysis-00.toc
3042 INFO: Caching module hooks...
3047 INFO: Analyzing /home/ata/source/hide-layout/main.py
3177 INFO: Processing pre-find module path hook   PyQt5.uic.port_v3
3215 INFO: Processing pre-find module path hook   PyQt5.uic.port_v2
3419 INFO: Loading module hooks...
3419 INFO: Loading module hook "hook-PyQt5.QtCore.py"...
3517 INFO: Loading module hook "hook-PyQt5.QtWidgets.py"...
3565 INFO: Loading module hook "hook-xml.py"...
3787 INFO: Loading module hook "hook-xml.etree.cElementTree.py"...
3787 INFO: Loading module hook "hook-encodings.py"...
3839 INFO: Loading module hook "hook-pydoc.py"...
3840 INFO: Loading module hook "hook-PyQt5.QtGui.py"...
3877 INFO: Loading module hook "hook-PyQt5.uic.py"...
3879 INFO: Loading module hook "hook-PyQt5.py"...
3912 INFO: Looking for ctypes DLLs
3912 INFO: Analyzing run-time hooks ...
3915 INFO: Including run-time hook 'pyi_rth_qt5.py'
3919 INFO: Looking for dynamic libraries
6318 INFO: Looking for eggs
6318 INFO: Python library not in binary dependencies. Doing additional searching...
6417 INFO: Using Python library /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
6421 INFO: Warnings written to /home/ata/source/hide-layout/build/main/warn-main.txt
6444 INFO: Graph cross-reference written to /home/ata/source/hide-layout/build/main/xref-main.html
6454 INFO: checking PYZ
6454 INFO: Building PYZ because PYZ-00.toc is non existent
6454 INFO: Building PYZ (ZlibArchive) /home/ata/source/hide-layout/build/main/PYZ-00.pyz
6758 INFO: Building PYZ (ZlibArchive) /home/ata/source/hide-layout/build/main/PYZ-00.pyz completed successfully.
6760 INFO: checking PKG
6760 INFO: Building PKG because PKG-00.toc is non existent
6761 INFO: Building PKG (CArchive) PKG-00.pkg
6804 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
6805 INFO: Bootloader /home/ben/.local/lib/python3.6/site-packages/PyInstaller/bootloader/Linux-64bit/run
6805 INFO: checking EXE
6805 INFO: Building EXE because EXE-00.toc is non existent
6805 INFO: Building EXE from EXE-00.toc
6807 INFO: Appending archive to ELF section in EXE /home/ata/source/hide-layout/build/main/main
6819 INFO: Building EXE from EXE-00.toc completed successfully.
6821 INFO: checking COLLECT
6821 INFO: Building COLLECT because COLLECT-00.toc is non existent
6821 INFO: Building COLLECT COLLECT-00.toc
7351 INFO: Building COLLECT COLLECT-00.toc completed successfully.
Im Verzeichnis des Beispielprogramms wurden einige neue Dateien und Ordner angelegt. Im Verzeichnis "/build/main/" auch eine ausführbare Datei im ELF-Format namens "main".

Code: Alles auswählen

main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1]=28ba79c778f7402713aec6af319ee0fbaf3a8014, stripped
Als ich diese Datei voller Erwartungen ausgeführt habe, ist nichts passiert. Kein Programmfenster und auch keine Fehlermeldung. Wenn die Datei im Terminal gestartet wird, tut sich auch nichts.

Was habe ich falsch gemacht?

PS: Die erstellte ausführbare Datei (1,3 MB) würde ich auch gerne zur Verfügung stellen, aber ich kenne leider keinen Hoster, der Programmdateien akzeptiert.

Gruß
Atalanttore
__deets__
User
Beiträge: 6189
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 18. Mai 2019, 20:58

Pastebin? Aber ob das viel bringt weiß ich nicht. Gibt es in deiner main.py print-Anweisungen? Hast du mal probiert mit einem simplen “hallo Welt” anzufangen? Und dich dann vorgearbeitet bis zu es bricht? Was steht in der Doku zu pyinstaller, muss da ggf auf bestimmte Strukturen geachtet werden, wie zb eine main-Funktion?
Benutzeravatar
snafu
User
Beiträge: 5902
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Sonntag 19. Mai 2019, 07:38

Wie sieht die main.py aus? Ist das if __name__ == '__main__' Konstrukt dort vorhanden und tut es etwas sinnvolles?
Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Sonntag 19. Mai 2019, 13:59

snafu hat geschrieben:
Sonntag 19. Mai 2019, 07:38
Wie sieht die main.py aus? Ist das if __name__ == '__main__' Konstrukt dort vorhanden und tut es etwas sinnvolles?
Ja, siehe Link auf Beispielprogramm.

__deets__ hat geschrieben:
Samstag 18. Mai 2019, 20:58
Pastebin? Aber ob das viel bringt weiß ich nicht.
Den Namen habe ich schon mal gehört, aber den Dienst noch nie genutzt. Danke.

__deets__ hat geschrieben:
Samstag 18. Mai 2019, 20:58
Gibt es in deiner main.py print-Anweisungen? Hast du mal probiert mit einem simplen “hallo Welt” anzufangen? Und dich dann vorgearbeitet bis zu es bricht?
Ja, aber es erscheint weder ein Terminal-Fenster zur Ausgabe von "Hallo Welt" noch überhaupt etwas im Terminal, wenn die Datei von dort gestartet wird.

__deets__ hat geschrieben:
Samstag 18. Mai 2019, 20:58
Was steht in der Doku zu pyinstaller, muss da ggf auf bestimmte Strukturen geachtet werden, wie zb eine main-Funktion?
Laut Doku genügt der Aufruf von

Code: Alles auswählen

pyinstaller myscript.py
Gruß
Atalanttore
__deets__
User
Beiträge: 6189
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 19. Mai 2019, 16:04

Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Sonntag 19. Mai 2019, 16:57

@__deets__: Danke für den Link.

Weil bisher keine Fehlermeldung erschienen ist, aber bei der Ausführung der Datei auch nichts passiert, habe ich den `log-level` auf `DEBUG` gesetzt. Die Anzahl an Debugmeldungen ist enorm (zu viel für einen Beitrag im Python-Forum), aber leider wieder kein Hinweis auf einen Fehler bzw. Error.

Siehe: Debugmeldungen auf Pastebin

Gruß
Atalanttore
Antworten