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
Executable mit Pyinstaller erstellen --Fehlermeldung--
Mal ein Schuss ins Blaue: Hast du das gelesen und berücksichtigt?
http://www.pyinstaller.org/wiki/Python26Win
http://www.pyinstaller.org/wiki/Python26Win
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
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
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
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?
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?
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?
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?
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Wird doch dort erklärt. Single-file executable.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
Ja, wird dort erklärt, aber es funktioniert bei mir so leider nicht, da dann die DLLs nicht gefunden werden.Sr4l hat geschrieben:Wird doch dort erklärt. Single-file executable.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
Hab ich gleich mal ausgetestet, funktioniert aber leider nicht. Es wird zwar eine einzige exe erstellt, wennsnafu hat geschrieben:[
Schon auf die Idee gekommen, `--onefile` und `--tk` mitzugeben?
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'
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?
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?
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 (oder wie auch immer der import bei Dir aussieht) diese Anweisungen ein (ungetestet):
Code: Alles auswählen
import win32com.client
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__