Probleme mit: pickle und py2exe
Hallo,
ich habe ein kleines Programm mit Python mit pickle geschrieben. Wenn ich es jetzt aber mit py2exe in eine exe datei umwandle klappt es nicht mehr. Wenn ich die exe-Datei öffne startet er kurz aber dann schließt er wieder das Fenster!
Kann mir einer Helfen?
mfg
ich habe ein kleines Programm mit Python mit pickle geschrieben. Wenn ich es jetzt aber mit py2exe in eine exe datei umwandle klappt es nicht mehr. Wenn ich die exe-Datei öffne startet er kurz aber dann schließt er wieder das Fenster!
Kann mir einer Helfen?
mfg
Ich habs gerade nochma probiert.
Das Problem liegt irgentwie beim Laden von einer größeren Textdatei...
Das Problem liegt irgentwie beim Laden von einer größeren Textdatei...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, klar. Ruf das Programm mal aus einer Konsole aus, so dass du die Fehlermeldung mitbekommst.
Ich bezweifle, dass das was mit pickle zu tun hat.
Ich bezweifle, dass das was mit pickle zu tun hat.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Der Fehler:
Traceback (most recent call last):
File "TEST123.py", line 11, in ?
File "pickle.pyc", line 1394, in loads
File "pickle.pyc", line 872, in load
File "pickle.pyc", line 984, in load_string
ValueError: insecure string pickle
--------------------------------------------------
line 11 von TEST123.py:
...
daten = pickle.loads( f.read() )
...
Traceback (most recent call last):
File "TEST123.py", line 11, in ?
File "pickle.pyc", line 1394, in loads
File "pickle.pyc", line 872, in load
File "pickle.pyc", line 984, in load_string
ValueError: insecure string pickle
--------------------------------------------------
line 11 von TEST123.py:
...
daten = pickle.loads( f.read() )
...
Die Zeile 984 ist interessant und wichtig...Gast99 hat geschrieben:Der Fehler:
Traceback (most recent call last):
File "TEST123.py", line 11, in ?
File "pickle.pyc", line 1394, in loads
File "pickle.pyc", line 872, in load
File "pickle.pyc", line 984, in load_string
ValueError: insecure string pickle
...

Tabellar
tabellar hat geschrieben:Die Zeile 984 ist interessant und wichtig...Gast99 hat geschrieben:Der Fehler:
Traceback (most recent call last):
File "TEST123.py", line 11, in ?
File "pickle.pyc", line 1394, in loads
File "pickle.pyc", line 872, in load
File "pickle.pyc", line 984, in load_string
ValueError: insecure string pickle
......
Tabellar
Ja und was soll ich jetzt machen?!
Da kommt dieser Fehler:Leonidas hat geschrieben:Wie wärs mit pickle.load(f)?
Traceback (most recent call last):
File "TEST123.py", line 12, in ?
File "pickle.pyc", line 1390, in load
File "pickle.pyc", line 872, in load
File "pickle.pyc", line 985, in load_string
LookupError: no codec search functions registered: can't find encoding
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
Wie wäre es mit ein wenig mehr von deinem Programm-Code??
und eventuell auch mal deine setup.py?
Die Tracebacks kommen alle aus der pickle.pyc, aber die ruftst du ja auf in deiner test123.py, daher wäre es für uns schon hilfreich zu wissen, was du da machst.
mfg, querdenker
und eventuell auch mal deine setup.py?
Die Tracebacks kommen alle aus der pickle.pyc, aber die ruftst du ja auf in deiner test123.py, daher wäre es für uns schon hilfreich zu wissen, was du da machst.
mfg, querdenker
setup.py:
in Test123.py wird Datei Files.txt geladen.
Dann wird die geladene Liste bearbeitet. Das heißt Sachen hinzufügen ect.
Am Ende wird dann:
Edit (Leonidas): Code in Python-Tags gesetzt, bitte das das nächste mal selbst machen 
Code: Alles auswählen
from distutils.core import setup
import py2exe
setup(console=["Test123.py"])
Code: Alles auswählen
import pickle
f=file("files.txt",'r')
daten = pickle.load(f)
f.close()
Am Ende wird dann:
Code: Alles auswählen
f=file("files.txt",'w')
f.write(pickle.dumps(daten))
f.close()

-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Versuchs mal damit:
Code: Alles auswählen
from distutils.core import setup
import py2exe
setup(console=["Test123.py"],
options = {"py2exe": {"packages": ["encodings"]}}
)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Wow! Du bist echt gutLeonidas hat geschrieben:Versuchs mal damit:Code: Alles auswählen
from distutils.core import setup import py2exe setup(console=["Test123.py"], options = {"py2exe": {"packages": ["encodings"]}} )

Es klappt, zumindest auf den ersten Blick. Ich schaus mir jetzt nochn bisschen genauer an.
DANKE!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
DankeGast99 hat geschrieben:Wow! Du bist echt gut

Ein Tipp noch: du kannst auch pickle.dump(data, f) nutzen um in die Datei zu schreiben.Gast99 hat geschrieben:Code: Alles auswählen
f=file("files.txt",'w') f.write(pickle.dumps(daten)) f.close()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Was meinst du damit?BlackJack hat geschrieben:Und pickle Dateien bitte immer im Binärmodus mit 'rb' bzw. 'wb' öffnen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
StattGast009 hat geschrieben:Was meinst du damit?
Code: Alles auswählen
f = file('files.txt', 'r')
Code: Alles auswählen
f = file('files.txt', 'rb')
Code: Alles auswählen
f = file('files.txt', 'w')
Code: Alles auswählen
f = file('files.txt', 'wb')
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Wieso denn?BlackJack hat geschrieben:Und pickle Dateien bitte immer im Binärmodus mit 'rb' bzw. 'wb' öffnen.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Weil das auch im Protocoll 0 noch Binärdaten sind, deren Zeilenumbrüche sind immer so wie sie sind (ich weiß nicht ob es CRLF ist oder etwas anderes), wenn man die Zeilenumbrüche ändert funktionierts nicht mehr. Zumindest habe ich das mal irgendwo gelesen.N317V hat geschrieben:Wieso denn?BlackJack hat geschrieben:Und pickle Dateien bitte immer im Binärmodus mit 'rb' bzw. 'wb' öffnen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Wenn ich das aber so mache, dann meckert er bei der nächsten zeile "daten2 = pickle.loads( f.read() )" rum.Leonidas hat geschrieben:StattGast009 hat geschrieben:Was meinst du damit?besserCode: Alles auswählen
f = file('files.txt', 'r')
und stattCode: Alles auswählen
f = file('files.txt', 'rb')
besserCode: Alles auswählen
f = file('files.txt', 'w')
Code: Alles auswählen
f = file('files.txt', 'wb')
Mein Codeabschnitt:
Code: Alles auswählen
f=file("files2.txt",'rb')
daten2 = pickle.loads( f.read() )
f.close()
Traceback (most recent call last):
File "C:\xxy.py", line 43, in -toplevel-
daten2 = pickle.loads( f.read() )
File "C:\Python24\lib\pickle.py", line 1394, in loads
return Unpickler(file).load()
File "C:\Python24\lib\pickle.py", line 872, in load
dispatch[key](self)
File "C:\Python24\lib\pickle.py", line 980, in load_string
raise ValueError, "insecure string pickle"
ValueError: insecure string pickle
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dafür hat pickle ja auch die load()-Funktion (ohne das s hintendran, welches auf String weist):gAst005 hat geschrieben:Mein Codeabschnitt:Code: Alles auswählen
f=file("files2.txt",'rb') daten2 = pickle.loads( f.read() ) f.close()
Code: Alles auswählen
f = file("files2.txt",'rb')
daten2 = pickle.load(f)
f.close()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice