PyInstaller -- erzeugte Exe tut nichts

10/11/2008 - 18:36 von Thomas Mlynarczyk | Report spam
Hallo,

Die Frage, wie man aus *.py eine *.exe macht (in der absolut alles, was
gebraucht wird, drin ist -- Python, Qt, Icons, ...) wurde hier
wahrscheinlich schon öfter gestellt. Google liefert ja auch Etliches an
Ergebnissen, nur ist es halt schwierig, die Spreu vom Weizen zu trennen.
Gibt es *die* Website, die man zu dem Thema unbedingt lesen sollte?

Ich habe es nun mal mit dem PyInstaller (1.3) versucht. Python25 + PyQt
+ ein ico-File + mein Script, das nur ein (sonst funktionsloses)
Dialogfenster anzeigen soll. Herausgekommen ist zwar eine Exe, aber mit
zwei Schönheitsfehlern: a) das Icon ist absolut nicht das von mir
spezifizierte und b) beim Doppelklick tut sich gar nichts. Alles, was
ich zur Fehlersuche habe, ist die erzeugte Warndatei:

W: no module named posix (conditional import by os)
W: no module named pwd (delayed, conditional import by posixpath)
W: no module named win32api (delayed import by iu)
W: no module named posix (delayed, conditional import by iu)
W: no module named org (top-level import by copy)
W: no module named _emx_link (conditional import by os)
W: delayed __import__ hack detected at line 0 - encodings
(C:\Programme\Python25\lib\encodings\__init__.pyc)
W: delayed eval hack detected at line 0 - os
(C:\Programme\Python25\lib\os.pyc)
W: delayed conditional exec statement detected at line 0 - iu
(C:\Programme\Python25\Lib\site-packages\PyInstaller13\iu.pyc)
W: delayed conditional exec statement detected at line 0 - iu
(C:\Programme\Python25\Lib\site-packages\PyInstaller13\iu.pyc)

Laut Doku muß ja eine Warnung nicht zwangslàufig etwas Schlimmes
bedeuten, aber wenn's am Ende nicht funktioniert...

Enthàlt die obige Aufstellung etwas wirklich Kritisches? Welche
Newbie-Fallen lauern beim PyInstaller? Und was könnte ich sonst noch
tun, um dem Fehler auf die Schliche zu kommen? (Das Py-Script selbst
funktioniert ja bestens.)

Oder gibt es bessere Alternativen zum PyInstaller?

Gruß,
Thomas

Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!
(Coluche)
 

Lesen sie die antworten

#1 Thorsten Kampe
11/11/2008 - 21:16 | Warnen spam
* Thomas Mlynarczyk (Mon, 10 Nov 2008 18:36:13 +0100)
Die Frage, wie man aus *.py eine *.exe macht (in der absolut alles, was
gebraucht wird, drin ist -- Python, Qt, Icons, ...) wurde hier
wahrscheinlich schon öfter gestellt. Google liefert ja auch Etliches an
Ergebnissen, nur ist es halt schwierig, die Spreu vom Weizen zu trennen.
Gibt es *die* Website, die man zu dem Thema unbedingt lesen sollte?



Meines Wissens nicht.

Ich habe es nun mal mit dem PyInstaller (1.3) versucht. Python25 + PyQt
+ ein ico-File + mein Script, das nur ein (sonst funktionsloses)
Dialogfenster anzeigen soll.



Du solltest wenn möglich den Developer snapshot holen; das Changelog
zeigt das da einige Aenderungen waren. Außerdem kann es zu Problemen
kommen bei Konsole-Anwendungen und Python 2.6.

Enthàlt die obige Aufstellung etwas wirklich Kritisches? Welche
Newbie-Fallen lauern beim PyInstaller? Und was könnte ich sonst noch
tun, um dem Fehler auf die Schliche zu kommen? (Das Py-Script selbst
funktioniert ja bestens.)



Tja, das kommt wirklich darauf an, was du genau gemacht hast, welches
PyQt du verwendest, etc. Bei mir funktioniert es wunderbar.

Hast du die Win32 Extensions installiert?

Oder gibt es bessere Alternativen zum PyInstaller?



Nein, der ist der beste.

Ich habe mal das Batch-Skript angehàngt, das ich immer verwende:

@ echo off

REM "Python for Windows Extensions" (pywin32) is needed for certain
REM options

title pyinstaller
color 0b

set DRIVE=E

set Path=%Path%;%DRIVE%:\cygwin\usr\local\bin;%DRIVE%:\cygwin\bin

REM=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
REM set SCRIPT=script
set SCRIPT=my_application

REM set SCRIPTDIR=%DRIVE%:\data\ifolder\dev\python\script
set SCRIPTDIR="%DRIVE%:\program files\komodo\application data\5.0
\script"

REM set ICONFILE=%DRIVE%:\data\ifolder\dev\python\installer\pyinstaller
\icon\gnome-mime-application-x-python.ico
set ICONFILE=%DRIVE%:\data\ifolder\dev\python\installer\pyinstaller\icon
\source_py.ico
REM=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
set EXEDIR=%DRIVE%:\cygwin\home\thorsten\python
set VERSIONFILE=%DRIVE%:\data\ifolder\dev\python\installer\pyinstaller
\versioninfo.txt
set INSTALLERDIR="%DRIVE%:\program files\pyinstaller"
set PYTHONDIR=%DRIVE%:\program files\python

pushd %PYTHONDIR%
REM needs only once to be executed
python.exe %INSTALLERDIR%\Configure.py
REM --noconsole --upx
python.exe %INSTALLERDIR%\Makespec.py --upx ^
%SCRIPTDIR%\%SCRIPT%.py
python.exe -O %INSTALLERDIR%\Build.py %EXEDIR%\%SCRIPT%.spec

popd
color 07
pause

Thorsten

Ähnliche fragen