Seite 1 von 1

Executable mit Pyinstaller erstellen --Fehlermeldung--

Verfasst: Mittwoch 15. Dezember 2010, 17:42
von eey
Hallo zusammen,

ich habe ein Problem mit Pyinstaller. Und zwar möchte ich gerne aus einem Pythonskript eine .exe erstellen.
Hab hier mal die Forensuche benutzt und bin so auf Pythoninstaller gestoßen, welches ich mir auch
runtergeladen habe. Ich benutze Python 2.7.

Ich bin dann nach folgendem Tutorial (welches ich ebenfalls über die Forensuche gefunden habe) vorgegangen:
http://wiki.python.de/PyInstaller-Tutor ... %20Windows

Mein Problem ist jetzt schon im ersten Schritt, wenn ich über die Eingabeaufforderung das Configure.py Skript
ausführen will erscheinen folgende Fehlermeldungen:

Traceback (most recent call last):
File "C:\Python27\pyinstaller-1.4\Configure.py", line 30, in <module>
import mf
File "C:\Python27\pyinstaller-1.4\mf.py", line 817, in <module>
JUMP_IF_FALSE = dis.opname.index('JUMP_IF_FALSE')
ValueError: 'JUMP_IF_FALSE' is not in list


Weiß jemand hier was das zu bedeuten hat und wo hier der Fehler liegt? Bin eigentlich exakt nach dem Tutorial
vorgegangen und weiß nicht wo das Problem liegen könnte....

Bin für jede Hilfe dankbar :)

Gruß,

eey

Re: Executable mit Pyinstaller erstellen --Fehlermeldung--

Verfasst: Mittwoch 15. Dezember 2010, 17:59
von numerix
Mal ein Schuss ins Blaue: Hast du das gelesen und berücksichtigt?
http://www.pyinstaller.org/wiki/Python26Win

Re: Executable mit Pyinstaller erstellen --Fehlermeldung--

Verfasst: Montag 20. Dezember 2010, 14:44
von eey
Hallo,

vielen Dank für die Antwort, hat mir schon weitergeholfen. Entschuldigung dass ich mich erst jetzt melde,
aber ich mach das von der Arbeit aus und arbeite nur 2 mal die Woche.

Habe allerdings noch Probleme mit pyinstaller, er erstellt mir zwar eine exe die sich auch starten lässt,
allerdings nur auf einem Rechner der Python installiert hat. Auf einem Rechner ohne Pythoninstallation
findet er "python.dll" nicht - Warum sucht das teil überhaupt nach Dingen aus einer Pythoninstallation,
ich dachte der Sinn dieses Skripts wäre es standalone-exen zu generieren...

Weiß jemand ob das geht, und wenn ja was ich falsch mache?

mfg,

eey

Re: Executable mit Pyinstaller erstellen --Fehlermeldung--

Verfasst: Montag 20. Dezember 2010, 16:11
von Sr4l
Ich kenne PyIntsaller nicht so gut wie Py2Exe deshalb bin ich mir nicht sicher ob das eleganter geht.
Eigentlich sollte er python.dll hinzufügen wenn er sie braucht, bzw. heißt die nicht python27.dll?
  • Gibt es in deinem dist Ordner python.dll oder python27.dll?
  • Gibt es auf dem Python installierten Rechner in C:\Windows\System32 die python.dll?
  • Oder gibt es dort nur die python27.dll?
  • Erzeugst du ne single executable oder nen ganzen Ordner?
Ansonsten kopiere die DLL einfach in deinen dist Ordner mit rüber, entweder manuell oder per Spec File. Geht natürlich nur für den fall das du keine single executable erstellst.

Re: Executable mit Pyinstaller erstellen --Fehlermeldung--

Verfasst: Montag 20. Dezember 2010, 16:42
von eey
Habs jetzt doch noch hingekriegt, man muss nur statt makespec.py --onefile Myscript.py einfach
makespec.py --tk Myscript.py eingeben, dann klappts bei mir.

Wird halt ein Ordner erstellt in dem die exe und alle DLLs die dafür benötigt werden befinden.


Eine einzige, alleinige exe, die alle benötigten DLLs enthällt kann man nicht erstellen, oder?
Also NUR die exe ohne die dafür benötigten DLLs?

Re: Executable mit Pyinstaller erstellen --Fehlermeldung--

Verfasst: Montag 20. Dezember 2010, 17:01
von Sr4l
eey hat geschrieben:Ich bin dann nach folgendem Tutorial (welches ich ebenfalls über die Forensuche gefunden habe) vorgegangen:
http://wiki.python.de/PyInstaller-Tutor ... %20Windows
Wird doch dort erklärt. Single-file executable.

Re: Executable mit Pyinstaller erstellen --Fehlermeldung--

Verfasst: Montag 20. Dezember 2010, 17:02
von snafu
Schon auf die Idee gekommen, `--onefile` und `--tk` mitzugeben?

Re: Executable mit Pyinstaller erstellen --Fehlermeldung--

Verfasst: Montag 20. Dezember 2010, 17:12
von eey
Sr4l hat geschrieben:
eey hat geschrieben:Ich bin dann nach folgendem Tutorial (welches ich ebenfalls über die Forensuche gefunden habe) vorgegangen:
http://wiki.python.de/PyInstaller-Tutor ... %20Windows
Wird doch dort erklärt. Single-file executable.
Ja, wird dort erklärt, aber es funktioniert bei mir so leider nicht, da dann die DLLs nicht gefunden werden.
snafu hat geschrieben:[
Schon auf die Idee gekommen, `--onefile` und `--tk` mitzugeben?
Hab ich gleich mal ausgetestet, funktioniert aber leider nicht. Es wird zwar eine einzige exe erstellt, wenn
ich diese ausführen will erscheint aber folgende Fehlermeldung:

Traceback (most recent call last):
File "<string>", line 7, in <module>
File "C:\Python27\trunk\iu.py", line 436, in importHook
mod = _self_doimport(nm, ctx, fqname)
File "C:\Python27\trunk\iu.py", line 521, in doimport
exec co in mod.__dict__
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client", line 11,
in <module>
File "C:\Python27\trunk\iu.py", line 436, in importHook
mod = _self_doimport(nm, ctx, fqname)
File "C:\Python27\trunk\iu.py", line 521, in doimport
exec co in mod.__dict__
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client.gencache",
line 662, in <module>
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client.gencache",
line 58, in __init__
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client.gencache",
line 649, in Rebuild
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client.gencache",
line 65, in _SaveDicts
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client.gencache",
line 141, in GetGeneratePath
IOError: [Errno 22] invalid mode ('w') or filename: 'C:\\Python27\\trunk\\Myskri
pt\\dist\\Myskript.exe?844863\\__init__.py'

Re: Executable mit Pyinstaller erstellen --Fehlermeldung--

Verfasst: Mittwoch 22. Dezember 2010, 11:54
von eey
Weiß niemand wo der Fehler liegen könnte?

Eigentlich müsste doch exakt das gleiche erstellt werden wenn ich eine --onefile exe erstelle,
nur dass die eben alles beinhaltet was benötigt wird.

Erstelle ich die exe per makespec.py --tk myskript.py wird alles richtig in den Ordner dist
erstellt und ich hab die exe sowie alle benötigten Dateien.

Estelle ich jetzt aber die exe per makespec.py --tk --onefile myskript.py wird zwar nur eine
exe erstellt, diese funktioniert aber nicht.

Woran liegt das? Eigentlich sollte doch genau das gleiche erstellt werden, warum funktioniert das nicht?

Re: Executable mit Pyinstaller erstellen --Fehlermeldung--

Verfasst: Mittwoch 22. Dezember 2010, 16:06
von fhoech
Der Fehler scheint ja in Zusammenhang mit win32com.client.gencache aufzutreten, da dieses versucht, eine "virtuellen" Pfad, der auf eine Position innerhalb der gepackten exe zeigt, als Datei zu erstellen. Versuch mal folgendes, füge in deinem Code nach

Code: Alles auswählen

import win32com.client
(oder wie auch immer der import bei Dir aussieht) diese Anweisungen ein (ungetestet):

Code: Alles auswählen

import os, sys, win32com

if getattr(sys, 'frozen', False) and os.getenv('_MEIPASS2'):
    win32com.__gen_path__ = os.path.join(os.environ['_MEIPASS2'], 'gen_py')
    os.mkdir(win32com.__gen_path__)
    sys.modules["win32com.gen_py"].__path__ = win32com.__gen_path__