Probleme mit: pickle und py2exe

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.
Gast99

Probleme mit: pickle und py2exe

Beitragvon Gast99 » Sonntag 3. Juli 2005, 10:47

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
Gast99

Beitragvon Gast99 » Sonntag 3. Juli 2005, 11:04

Ich habs gerade nochma probiert.

Das Problem liegt irgentwie beim Laden von einer größeren Textdatei...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 3. Juli 2005, 11:15

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Gast99

Beitragvon Gast99 » Sonntag 3. Juli 2005, 11:22

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() )
...
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » Sonntag 3. Juli 2005, 11:28

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
...


Die Zeile 984 ist interessant und wichtig... :wink: ...

Tabellar
Gast99

Beitragvon Gast99 » Sonntag 3. Juli 2005, 11:32

tabellar hat geschrieben:
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
...


Die Zeile 984 ist interessant und wichtig... :wink: ...

Tabellar



Ja und was soll ich jetzt machen?!
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 3. Juli 2005, 11:37

Wie wärs mit pickle.load(f)?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Gast99

Beitragvon Gast99 » Sonntag 3. Juli 2005, 12:17

Leonidas hat geschrieben:Wie wärs mit pickle.load(f)?


Da kommt dieser Fehler:

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
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Beitragvon querdenker » Sonntag 3. Juli 2005, 12:33

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
Gast99

Beitragvon Gast99 » Sonntag 3. Juli 2005, 12:39

setup.py:

Code: Alles auswählen

from distutils.core import setup
import py2exe
     
setup(console=["Test123.py"])


in Test123.py wird Datei Files.txt geladen.

Code: Alles auswählen

import pickle

f=file("files.txt",'r')
daten = pickle.load(f)
f.close()


Dann wird die geladene Liste bearbeitet. Das heißt Sachen hinzufügen ect.


Am Ende wird dann:

Code: Alles auswählen

f=file("files.txt",'w')
f.write(pickle.dumps(daten))
f.close()


Edit (Leonidas): Code in Python-Tags gesetzt, bitte das das nächste mal selbst machen :evil:
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 3. Juli 2005, 12:52

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 Modvoice
Gast99

Beitragvon Gast99 » Sonntag 3. Juli 2005, 13:30

Leonidas hat geschrieben:Versuchs mal damit:

Code: Alles auswählen

from distutils.core import setup
import py2exe

setup(console=["Test123.py"],
    options = {"py2exe": {"packages": ["encodings"]}}
)


Wow! Du bist echt gut :)
Es klappt, zumindest auf den ersten Blick. Ich schaus mir jetzt nochn bisschen genauer an.

DANKE!
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 3. Juli 2005, 13:34

Gast99 hat geschrieben:Wow! Du bist echt gut :)

Danke 8)

Gast99 hat geschrieben:

Code: Alles auswählen

f=file("files.txt",'w')
f.write(pickle.dumps(daten))
f.close()

Ein Tipp noch: du kannst auch pickle.dump(data, f) nutzen um in die Datei zu schreiben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
BlackJack

Beitragvon BlackJack » Sonntag 3. Juli 2005, 23:23

Und pickle Dateien bitte immer im Binärmodus mit 'rb' bzw. 'wb' öffnen.
Gast009

Beitragvon Gast009 » Donnerstag 5. Januar 2006, 21:29

BlackJack hat geschrieben:Und pickle Dateien bitte immer im Binärmodus mit 'rb' bzw. 'wb' öffnen.


Was meinst du damit?

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]